OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // None of these tests is relevant for Chrome OS. | 5 // None of these tests is relevant for Chrome OS. |
6 GEN('#if !defined(OS_CHROMEOS)'); | 6 GEN('#if !defined(OS_CHROMEOS)'); |
7 | 7 |
8 GEN('#include "base/command_line.h"'); | |
9 GEN('#include "chrome/common/chrome_switches.h"'); | |
10 | |
8 /** | 11 /** |
9 * TestFixture for ManageProfileOverlay and CreateProfileOverlay WebUI testing. | 12 * TestFixture for ManageProfileOverlay and CreateProfileOverlay WebUI testing. |
10 * @extends {testing.Test} | 13 * @extends {testing.Test} |
11 * @constructor | 14 * @constructor |
12 */ | 15 */ |
13 function ManageProfileUITest() {} | 16 function ManageProfileUITest() {} |
14 | 17 |
15 ManageProfileUITest.prototype = { | 18 ManageProfileUITest.prototype = { |
16 __proto__: testing.Test.prototype, | 19 __proto__: testing.Test.prototype, |
17 | 20 |
18 /** @override */ | 21 /** @override */ |
19 browsePreload: 'chrome://settings-frame/manageProfile', | 22 browsePreload: 'chrome://settings-frame/manageProfile', |
20 | 23 |
21 /** | 24 /** |
22 * No need to run these for every OptionsPage test, since they'll cover the | 25 * No need to run these for every OptionsPage test, since they'll cover the |
23 * whole consolidated page each time. | 26 * whole consolidated page each time. |
24 * @override | 27 * @override |
25 */ | 28 */ |
26 runAccessibilityChecks: false, | 29 runAccessibilityChecks: false, |
27 | 30 |
31 /** @override */ | |
32 testGenPreamble: function() { | |
33 GEN('CommandLine::ForCurrentProcess()->' + | |
34 'AppendSwitch(switches::kAllowCreateExistingManagedUsers);'); | |
35 }, | |
36 | |
28 /** | 37 /** |
29 * Returns a test profile-info object with configurable "managed" status. | 38 * Returns a test profile-info object with configurable "managed" status. |
30 * @param {boolean} managed If true, the test profile will be marked as | 39 * @param {boolean} managed If true, the test profile will be marked as |
31 * managed. | 40 * managed. |
32 * @return {Object} A test profile-info object. | 41 * @return {Object} A test profile-info object. |
33 */ | 42 */ |
34 testProfileInfo_: function(managed) { | 43 testProfileInfo_: function(managed) { |
35 return { | 44 return { |
36 name: 'Test Profile', | 45 name: 'Test Profile', |
37 iconURL: 'chrome://path/to/icon/image', | 46 iconURL: 'chrome://path/to/icon/image', |
38 filePath: '/path/to/profile/data/on/disk', | 47 filePath: '/path/to/profile/data/on/disk', |
39 isCurrentProfile: true, | 48 isCurrentProfile: true, |
40 isManaged: managed | 49 isManaged: managed |
41 }; | 50 }; |
42 }, | 51 }, |
43 | 52 |
44 /** | 53 /** |
45 * Overrides WebUI methods that provide profile info, making them return a | 54 * Overrides WebUI methods that provide profile info, making them return a |
46 * test profile-info object. | 55 * test profile-info object. |
47 * @param {boolean} managed Whether the test profile should be marked managed. | 56 * @param {boolean} managed Whether the test profile should be marked managed. |
57 * @param {string} mode The mode of the overlay (either 'manage' or 'create'). | |
48 */ | 58 */ |
49 setProfileManaged_: function(managed) { | 59 setProfileManaged_: function(managed, mode) { |
50 // Override the BrowserOptions method to return the fake info. | 60 // Override the BrowserOptions method to return the fake info. |
51 BrowserOptions.getCurrentProfile = function() { | 61 BrowserOptions.getCurrentProfile = function() { |
52 return this.testProfileInfo_(managed); | 62 return this.testProfileInfo_(managed); |
53 }.bind(this); | 63 }.bind(this); |
54 // Set the profile info in the overlay. | 64 // Set the profile info in the overlay. |
55 ManageProfileOverlay.setProfileInfo(this.testProfileInfo_(managed), | 65 ManageProfileOverlay.setProfileInfo(this.testProfileInfo_(managed), mode); |
56 'manage'); | |
57 }, | 66 }, |
58 }; | 67 }; |
59 | 68 |
60 // Receiving the new profile defaults in the manage-user overlay shouldn't mess | 69 // Receiving the new profile defaults in the manage-user overlay shouldn't mess |
61 // up the focus in a visible higher-level overlay. | 70 // up the focus in a visible higher-level overlay. |
62 TEST_F('ManageProfileUITest', 'NewProfileDefaultsFocus', function() { | 71 TEST_F('ManageProfileUITest', 'NewProfileDefaultsFocus', function() { |
63 var self = this; | 72 var self = this; |
64 | 73 |
65 function checkFocus(pageName, expectedFocus, initialFocus) { | 74 function checkFocus(pageName, expectedFocus, initialFocus) { |
66 OptionsPage.showPageByName(pageName); | 75 OptionsPage.showPageByName(pageName); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
124 assertNotEquals(-1, signedInText.textContent.indexOf(custodianEmail)); | 133 assertNotEquals(-1, signedInText.textContent.indexOf(custodianEmail)); |
125 | 134 |
126 CreateProfileOverlay.updateSignedInStatus(''); | 135 CreateProfileOverlay.updateSignedInStatus(''); |
127 assertEquals('', CreateProfileOverlay.getInstance().signedInEmail_); | 136 assertEquals('', CreateProfileOverlay.getInstance().signedInEmail_); |
128 assertTrue(signedInText.hidden); | 137 assertTrue(signedInText.hidden); |
129 assertFalse(notSignedInText.hidden); | 138 assertFalse(notSignedInText.hidden); |
130 assertFalse($('create-profile-managed').checked); | 139 assertFalse($('create-profile-managed').checked); |
131 assertTrue($('create-profile-managed').disabled); | 140 assertTrue($('create-profile-managed').disabled); |
132 }); | 141 }); |
133 | 142 |
143 // The import link should show up if the user tries to create a profile with the | |
144 // same name as an existing managed user profile. | |
145 TEST_F('ManageProfileUITest', 'CreateExistingManagedUser', function() { | |
146 ManageProfileOverlay.getInstance().initializePage(); | |
147 var custodianEmail = 'chrome.playpen.test@gmail.com'; | |
148 CreateProfileOverlay.updateSignedInStatus(custodianEmail); | |
149 assertEquals(custodianEmail, | |
150 CreateProfileOverlay.getInstance().signedInEmail_); | |
151 this.setProfileManaged_(false, 'create'); | |
152 | |
153 // Initialize the list of existing managed users. | |
154 var managedUserList = options.ManagedUserList.getInstance(); | |
155 managedUserList.managedUsers = [ | |
156 { | |
157 id: 'managedUser1', | |
158 name: 'Rosalie', | |
159 iconURL: 'chrome://path/to/icon/image', | |
160 onCurrentDevice: false, | |
161 needAvatar: false | |
162 }, | |
163 { | |
164 id: 'managedUser2', | |
165 name: 'Fritz', | |
166 iconURL: 'chrome://path/to/icon/image', | |
167 onCurrentDevice: false, | |
168 needAvatar: true | |
169 }, | |
170 { | |
171 id: 'managedUser3', | |
172 name: 'Test', | |
173 iconURL: 'chrome://path/to/icon/image', | |
174 onCurrentDevice: true, | |
175 needAvatar: false | |
176 }]; | |
177 // Also add the name 'Test' to |profileNames_| to simulate that the profile | |
178 // exists on the device. | |
179 ManageProfileOverlay.getInstance().profileNames_.Test = true; | |
180 | |
181 // Initially, the ok button should be enabled and the import link should not | |
182 // exist. | |
183 assertFalse($('create-profile-ok').disabled); | |
184 assertTrue($('supervised-user-import') == null); | |
185 | |
186 // Now try to create profiles with the names of existing supervised users. | |
187 $('create-profile-managed').checked = true; | |
188 var nameField = $('create-profile-name'); | |
189 // A profile which already has an avatar. | |
190 nameField.value = 'Rosalie'; | |
191 ManageProfileOverlay.getInstance().onNameChanged_('create'); | |
192 assertTrue($('create-profile-ok').disabled); | |
193 assertTrue($('supervised-user-import') != null); | |
Pam (message me for reviews)
2014/01/08 14:36:46
How about
assertFalse($('supervised-user-import'
Adrian Kuegel
2014/01/08 16:49:09
Done.
| |
194 // A profile which doesn't have an avatar yet. | |
195 nameField.value = 'Fritz'; | |
196 ManageProfileOverlay.getInstance().onNameChanged_('create'); | |
197 assertTrue($('create-profile-ok').disabled); | |
198 assertTrue($('supervised-user-import') != null); | |
199 // A profile which already exists on the device. | |
200 nameField.value = 'Test'; | |
201 ManageProfileOverlay.getInstance().onNameChanged_('create'); | |
202 assertTrue($('create-profile-ok').disabled); | |
203 assertTrue($('supervised-user-import') == null); | |
204 | |
205 // A profile which does not exist yet. | |
206 nameField.value = 'NewProfileName'; | |
207 ManageProfileOverlay.getInstance().onNameChanged_('create'); | |
208 assertFalse($('create-profile-ok').disabled); | |
209 assertTrue($('supervised-user-import') == null); | |
210 }); | |
211 | |
134 // Managed users should not be able to edit their profile names, and the initial | 212 // Managed users should not be able to edit their profile names, and the initial |
135 // focus should be adjusted accordingly. | 213 // focus should be adjusted accordingly. |
136 TEST_F('ManageProfileUITest', 'EditManagedUserNameAllowed', function() { | 214 TEST_F('ManageProfileUITest', 'EditManagedUserNameAllowed', function() { |
137 var nameField = $('manage-profile-name'); | 215 var nameField = $('manage-profile-name'); |
138 | 216 |
139 this.setProfileManaged_(false); | 217 this.setProfileManaged_(false, 'manage'); |
140 ManageProfileOverlay.showManageDialog(); | 218 ManageProfileOverlay.showManageDialog(); |
141 expectFalse(nameField.disabled); | 219 expectFalse(nameField.disabled); |
142 expectEquals(nameField, document.activeElement); | 220 expectEquals(nameField, document.activeElement); |
143 | 221 |
144 OptionsPage.closeOverlay(); | 222 OptionsPage.closeOverlay(); |
145 | 223 |
146 this.setProfileManaged_(true); | 224 this.setProfileManaged_(true, 'manage'); |
147 ManageProfileOverlay.showManageDialog(); | 225 ManageProfileOverlay.showManageDialog(); |
148 expectTrue(nameField.disabled); | 226 expectTrue(nameField.disabled); |
149 expectEquals($('manage-profile-ok'), document.activeElement); | 227 expectEquals($('manage-profile-ok'), document.activeElement); |
150 }); | 228 }); |
151 | 229 |
152 // Setting profile information should allow the confirmation to be shown. | 230 // Setting profile information should allow the confirmation to be shown. |
153 TEST_F('ManageProfileUITest', 'ShowCreateConfirmation', function() { | 231 TEST_F('ManageProfileUITest', 'ShowCreateConfirmation', function() { |
154 var testProfile = this.testProfileInfo_(true); | 232 var testProfile = this.testProfileInfo_(true); |
155 testProfile.custodianEmail = 'foo@bar.example.com'; | 233 testProfile.custodianEmail = 'foo@bar.example.com'; |
156 ManagedUserCreateConfirmOverlay.setProfileInfo(testProfile); | 234 ManagedUserCreateConfirmOverlay.setProfileInfo(testProfile); |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
343 CreateProfileOverlay.updateSignedInStatus(custodianEmail); | 421 CreateProfileOverlay.updateSignedInStatus(custodianEmail); |
344 CreateProfileOverlay.updateManagedUsersAllowed(true); | 422 CreateProfileOverlay.updateManagedUsersAllowed(true); |
345 assertTrue(checkbox.disabled, 'creation in progress'); | 423 assertTrue(checkbox.disabled, 'creation in progress'); |
346 | 424 |
347 CreateProfileOverlay.updateCreateInProgress(false); | 425 CreateProfileOverlay.updateCreateInProgress(false); |
348 assertFalse(checkbox.disabled, 'creation finished'); | 426 assertFalse(checkbox.disabled, 'creation finished'); |
349 }); | 427 }); |
350 | 428 |
351 // Managed users shouldn't be able to open the delete or create dialogs. | 429 // Managed users shouldn't be able to open the delete or create dialogs. |
352 TEST_F('ManageProfileUITest', 'ManagedShowDeleteAndCreate', function() { | 430 TEST_F('ManageProfileUITest', 'ManagedShowDeleteAndCreate', function() { |
353 this.setProfileManaged_(false); | 431 this.setProfileManaged_(false, 'create'); |
354 | 432 |
355 ManageProfileOverlay.showCreateDialog(); | 433 ManageProfileOverlay.showCreateDialog(); |
356 assertEquals('createProfile', OptionsPage.getTopmostVisiblePage().name); | 434 assertEquals('createProfile', OptionsPage.getTopmostVisiblePage().name); |
357 OptionsPage.closeOverlay(); | 435 OptionsPage.closeOverlay(); |
358 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 436 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); |
359 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); | 437 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); |
360 assertEquals('manageProfile', OptionsPage.getTopmostVisiblePage().name); | 438 assertEquals('manageProfile', OptionsPage.getTopmostVisiblePage().name); |
361 assertFalse($('manage-profile-overlay-delete').hidden); | 439 assertFalse($('manage-profile-overlay-delete').hidden); |
362 OptionsPage.closeOverlay(); | 440 OptionsPage.closeOverlay(); |
363 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 441 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); |
364 | 442 |
365 this.setProfileManaged_(true); | 443 this.setProfileManaged_(true, 'create'); |
366 ManageProfileOverlay.showCreateDialog(); | 444 ManageProfileOverlay.showCreateDialog(); |
367 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 445 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); |
368 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); | 446 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); |
369 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 447 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); |
370 }); | 448 }); |
371 | 449 |
372 // Only non-managed users should be able to delete profiles. | 450 // Only non-managed users should be able to delete profiles. |
373 TEST_F('ManageProfileUITest', 'ManagedDelete', function() { | 451 TEST_F('ManageProfileUITest', 'ManagedDelete', function() { |
374 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); | 452 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); |
375 assertEquals('manageProfile', OptionsPage.getTopmostVisiblePage().name); | 453 assertEquals('manageProfile', OptionsPage.getTopmostVisiblePage().name); |
376 assertFalse($('manage-profile-overlay-delete').hidden); | 454 assertFalse($('manage-profile-overlay-delete').hidden); |
377 | 455 |
378 // Clicks the "Delete" button, after overriding chrome.send to record what | 456 // Clicks the "Delete" button, after overriding chrome.send to record what |
379 // messages were sent. | 457 // messages were sent. |
380 function clickAndListen() { | 458 function clickAndListen() { |
381 var originalChromeSend = chrome.send; | 459 var originalChromeSend = chrome.send; |
382 var chromeSendMessages = []; | 460 var chromeSendMessages = []; |
383 chrome.send = function(message) { | 461 chrome.send = function(message) { |
384 chromeSendMessages.push(message); | 462 chromeSendMessages.push(message); |
385 }; | 463 }; |
386 $('delete-profile-ok').onclick(); | 464 $('delete-profile-ok').onclick(); |
387 // Restore the original function so the test framework can use it. | 465 // Restore the original function so the test framework can use it. |
388 chrome.send = originalChromeSend; | 466 chrome.send = originalChromeSend; |
389 return chromeSendMessages; | 467 return chromeSendMessages; |
390 } | 468 } |
391 | 469 |
392 this.setProfileManaged_(false); | 470 this.setProfileManaged_(false, 'manage'); |
393 var messages = clickAndListen(); | 471 var messages = clickAndListen(); |
394 assertEquals(1, messages.length); | 472 assertEquals(1, messages.length); |
395 assertEquals('deleteProfile', messages[0]); | 473 assertEquals('deleteProfile', messages[0]); |
396 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 474 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); |
397 | 475 |
398 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); | 476 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); |
399 this.setProfileManaged_(true); | 477 this.setProfileManaged_(true, 'manage'); |
400 messages = clickAndListen(); | 478 messages = clickAndListen(); |
401 assertEquals(0, messages.length); | 479 assertEquals(0, messages.length); |
402 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 480 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); |
403 }); | 481 }); |
404 | 482 |
405 GEN('#endif // OS_CHROMEOS'); | 483 GEN('#endif // OS_CHROMEOS'); |
OLD | NEW |