| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 cr.define('user_manager.create_profile_tests', function() { | 5 cr.define('user_manager.create_profile_tests', function() { |
| 6 /** @return {!CreateProfileElement} */ | 6 /** @return {!CreateProfileElement} */ |
| 7 function createElement() { | 7 function createElement() { |
| 8 var createProfileElement = document.createElement('create-profile'); | 8 var createProfileElement = document.createElement('create-profile'); |
| 9 document.body.appendChild(createProfileElement); | 9 document.body.appendChild(createProfileElement); |
| 10 return createProfileElement; | 10 return createProfileElement; |
| 11 } | 11 } |
| 12 | 12 |
| 13 function registerTests() { | 13 function registerTests() { |
| 14 /** @type {?TestProfileBrowserProxy} */ | 14 /** @type {?TestProfileBrowserProxy} */ |
| 15 var browserProxy = null; | 15 var browserProxy = null; |
| 16 | 16 |
| 17 /** @type {?CreateProfileElement} */ | 17 /** @type {?CreateProfileElement} */ |
| 18 var createProfileElement = null; | 18 var createProfileElement = null; |
| 19 | 19 |
| 20 // Helper to select first signed in user from a dropdown menu. |
| 21 var selectFirstSignedInUser = function(dropdownMenu) { |
| 22 var option = dropdownMenu.querySelector('option:not([disabled])'); |
| 23 dropdownMenu.value = option.value; |
| 24 dropdownMenu.dispatchEvent(new Event('change')); |
| 25 }; |
| 26 |
| 20 suite('CreateProfileTests', function() { | 27 suite('CreateProfileTests', function() { |
| 21 setup(function() { | 28 setup(function() { |
| 22 browserProxy = new TestProfileBrowserProxy(); | 29 browserProxy = new TestProfileBrowserProxy(); |
| 23 | 30 |
| 24 // Replace real proxy with mock proxy. | 31 // Replace real proxy with mock proxy. |
| 25 signin.ProfileBrowserProxyImpl.instance_ = browserProxy; | 32 signin.ProfileBrowserProxyImpl.instance_ = browserProxy; |
| 26 browserProxy.setDefaultProfileInfo({name: 'profile name'}); | 33 browserProxy.setDefaultProfileInfo({name: 'profile name'}); |
| 27 browserProxy.setIcons([{url: 'icon1.png', label: 'icon1'}, | 34 browserProxy.setIcons([{url: 'icon1.png', label: 'icon1'}, |
| 28 {url: 'icon2.png', label: 'icon2'}]); | 35 {url: 'icon2.png', label: 'icon2'}]); |
| 29 browserProxy.setSignedInUsers([{username: 'username', | 36 browserProxy.setSignedInUsers([{username: 'username', |
| (...skipping 26 matching lines...) Expand all Loading... |
| 56 assertEquals(1, createProfileElement.signedInUsers_.length); | 63 assertEquals(1, createProfileElement.signedInUsers_.length); |
| 57 assertEquals('username', | 64 assertEquals('username', |
| 58 createProfileElement.signedInUsers_[0].username); | 65 createProfileElement.signedInUsers_[0].username); |
| 59 assertEquals('path/to/profile', | 66 assertEquals('path/to/profile', |
| 60 createProfileElement.signedInUsers_[0].profilePath); | 67 createProfileElement.signedInUsers_[0].profilePath); |
| 61 | 68 |
| 62 // The 'learn more' link is visible. | 69 // The 'learn more' link is visible. |
| 63 assertTrue(!!createProfileElement.$$('#learn-more > a')); | 70 assertTrue(!!createProfileElement.$$('#learn-more > a')); |
| 64 | 71 |
| 65 // The dropdown menu becomes visible when the checkbox is checked. | 72 // The dropdown menu becomes visible when the checkbox is checked. |
| 66 assertFalse(!!createProfileElement.$$('paper-dropdown-menu')); | 73 assertFalse(!!createProfileElement.$$('.md-select')); |
| 67 | 74 |
| 68 // Simulate checking the supervised user checkbox. | 75 // Simulate checking the supervised user checkbox. |
| 69 MockInteractions.tap( | 76 MockInteractions.tap( |
| 70 createProfileElement.$$("#makeSupervisedCheckbox")); | 77 createProfileElement.$$("#makeSupervisedCheckbox")); |
| 71 Polymer.dom.flush(); | 78 Polymer.dom.flush(); |
| 72 | 79 |
| 73 // The dropdown menu is visible and is populated with signed in users. | 80 // The dropdown menu is visible and is populated with signed in users. |
| 74 var dropdownMenu = createProfileElement.$$('paper-dropdown-menu'); | 81 var dropdownMenu = createProfileElement.$$('.md-select'); |
| 75 assertTrue(!!dropdownMenu); | 82 assertTrue(!!dropdownMenu); |
| 76 var users = dropdownMenu.querySelectorAll('paper-item'); | 83 var users = dropdownMenu.querySelectorAll('option:not([disabled])'); |
| 77 assertEquals(1, users.length); | 84 assertEquals(1, users.length); |
| 78 }); | 85 }); |
| 79 }); | 86 }); |
| 80 | 87 |
| 81 test('Name is non-empty by default', function() { | 88 test('Name is non-empty by default', function() { |
| 82 assertEquals('profile name', createProfileElement.$.nameInput.value); | 89 assertEquals('profile name', createProfileElement.$.nameInput.value); |
| 83 }); | 90 }); |
| 84 | 91 |
| 85 test('Create button is disabled if name is empty or invalid', function() { | 92 test('Create button is disabled if name is empty or invalid', function() { |
| 86 assertEquals('profile name', createProfileElement.$.nameInput.value); | 93 assertEquals('profile name', createProfileElement.$.nameInput.value); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 }); | 143 }); |
| 137 | 144 |
| 138 test('Supervised profile name is duplicate (on the device)', function() { | 145 test('Supervised profile name is duplicate (on the device)', function() { |
| 139 // Simulate checking the supervised user checkbox. | 146 // Simulate checking the supervised user checkbox. |
| 140 MockInteractions.tap( | 147 MockInteractions.tap( |
| 141 createProfileElement.$$("#makeSupervisedCheckbox")); | 148 createProfileElement.$$("#makeSupervisedCheckbox")); |
| 142 Polymer.dom.flush(); | 149 Polymer.dom.flush(); |
| 143 | 150 |
| 144 // There is an existing supervised user with this name on the device. | 151 // There is an existing supervised user with this name on the device. |
| 145 createProfileElement.$.nameInput.value = 'existing name 1'; | 152 createProfileElement.$.nameInput.value = 'existing name 1'; |
| 146 | 153 selectFirstSignedInUser(createProfileElement.$$('.md-select')); |
| 147 // Select the first signed in user. | |
| 148 var dropdownMenu = createProfileElement.$$('paper-dropdown-menu'); | |
| 149 var selector = dropdownMenu.querySelector('paper-listbox'); | |
| 150 selector.selected = 0; | |
| 151 | 154 |
| 152 // Simulate clicking 'Create'. | 155 // Simulate clicking 'Create'. |
| 153 MockInteractions.tap(createProfileElement.$.save); | 156 MockInteractions.tap(createProfileElement.$.save); |
| 154 | 157 |
| 155 return browserProxy.whenCalled('getExistingSupervisedUsers').then( | 158 return browserProxy.whenCalled('getExistingSupervisedUsers').then( |
| 156 function(args) { | 159 function(args) { |
| 157 // Create is not in progress. | 160 // Create is not in progress. |
| 158 assertFalse(createProfileElement.createInProgress_); | 161 assertFalse(createProfileElement.createInProgress_); |
| 159 // Message container is visible. | 162 // Message container is visible. |
| 160 var messageContainer = | 163 var messageContainer = |
| 161 createProfileElement.$$('#message-container'); | 164 createProfileElement.$$('#message-container'); |
| 162 assertTrue(messageContainer.clientHeight > 0); | 165 assertTrue(messageContainer.clientHeight > 0); |
| 163 // Error message is set. | 166 // Error message is set. |
| 164 var message = loadTimeData.getString( | 167 var message = loadTimeData.getString( |
| 165 'managedProfilesExistingLocalSupervisedUser'); | 168 'managedProfilesExistingLocalSupervisedUser'); |
| 166 assertEquals(message, createProfileElement.$.message.innerHTML); | 169 assertEquals(message, createProfileElement.$.message.innerHTML); |
| 167 }); | 170 }); |
| 168 }); | 171 }); |
| 169 | 172 |
| 170 test('Supervised profile name is duplicate (remote)', function() { | 173 test('Supervised profile name is duplicate (remote)', function() { |
| 171 // Simulate checking the supervised user checkbox. | 174 // Simulate checking the supervised user checkbox. |
| 172 MockInteractions.tap( | 175 MockInteractions.tap( |
| 173 createProfileElement.$$("#makeSupervisedCheckbox")); | 176 createProfileElement.$$("#makeSupervisedCheckbox")); |
| 174 Polymer.dom.flush(); | 177 Polymer.dom.flush(); |
| 175 | 178 |
| 176 // There is an existing supervised user with this name on the device. | 179 // There is an existing supervised user with this name on the device. |
| 177 createProfileElement.$.nameInput.value = 'existing name 2'; | 180 createProfileElement.$.nameInput.value = 'existing name 2'; |
| 178 | 181 selectFirstSignedInUser(createProfileElement.$$('.md-select')); |
| 179 // Select the first signed in user. | |
| 180 var dropdownMenu = createProfileElement.$$('paper-dropdown-menu'); | |
| 181 var selector = dropdownMenu.querySelector('paper-listbox'); | |
| 182 selector.selected = 0; | |
| 183 | 182 |
| 184 // Simulate clicking 'Create'. | 183 // Simulate clicking 'Create'. |
| 185 MockInteractions.tap(createProfileElement.$.save); | 184 MockInteractions.tap(createProfileElement.$.save); |
| 186 | 185 |
| 187 return browserProxy.whenCalled('getExistingSupervisedUsers').then( | 186 return browserProxy.whenCalled('getExistingSupervisedUsers').then( |
| 188 function(args) { | 187 function(args) { |
| 189 // Create is not in progress. | 188 // Create is not in progress. |
| 190 assertFalse(createProfileElement.createInProgress_); | 189 assertFalse(createProfileElement.createInProgress_); |
| 191 // Message container is visible. | 190 // Message container is visible. |
| 192 var messageContainer = | 191 var messageContainer = |
| 193 createProfileElement.$$('#message-container'); | 192 createProfileElement.$$('#message-container'); |
| 194 assertTrue(messageContainer.clientHeight > 0); | 193 assertTrue(messageContainer.clientHeight > 0); |
| 195 // Error message contains a link to import the supervised user. | 194 // Error message contains a link to import the supervised user. |
| 196 var message = createProfileElement.$.message; | 195 var message = createProfileElement.$.message; |
| 197 assertTrue( | 196 assertTrue( |
| 198 !!message.querySelector('#supervised-user-import-existing')); | 197 !!message.querySelector('#supervised-user-import-existing')); |
| 199 }); | 198 }); |
| 200 }); | 199 }); |
| 201 | 200 |
| 202 test('Displays error if custodian has no supervised users', function() { | 201 test('Displays error if custodian has no supervised users', function() { |
| 203 browserProxy.setExistingSupervisedUsers([]); | 202 browserProxy.setExistingSupervisedUsers([]); |
| 204 | 203 |
| 205 // Simulate checking the supervised user checkbox. | 204 // Simulate checking the supervised user checkbox. |
| 206 MockInteractions.tap( | 205 MockInteractions.tap( |
| 207 createProfileElement.$$("#makeSupervisedCheckbox")); | 206 createProfileElement.$$("#makeSupervisedCheckbox")); |
| 208 Polymer.dom.flush(); | 207 Polymer.dom.flush(); |
| 209 | 208 |
| 210 // Select the first signed in user. | 209 selectFirstSignedInUser(createProfileElement.$$('.md-select')); |
| 211 var dropdownMenu = createProfileElement.$$('paper-dropdown-menu'); | |
| 212 var selector = dropdownMenu.querySelector('paper-listbox'); | |
| 213 selector.selected = 0; | |
| 214 | 210 |
| 215 // Simulate clicking 'Import supervised user'. | 211 // Simulate clicking 'Import supervised user'. |
| 216 MockInteractions.tap(createProfileElement.$$('#import-user')); | 212 MockInteractions.tap(createProfileElement.$$('#import-user')); |
| 217 | 213 |
| 218 return browserProxy.whenCalled('getExistingSupervisedUsers').then( | 214 return browserProxy.whenCalled('getExistingSupervisedUsers').then( |
| 219 function(args) { | 215 function(args) { |
| 220 // Create is not in progress. | 216 // Create is not in progress. |
| 221 assertFalse(createProfileElement.createInProgress_); | 217 assertFalse(createProfileElement.createInProgress_); |
| 222 // Message container is visible. | 218 // Message container is visible. |
| 223 var messageContainer = | 219 var messageContainer = |
| 224 createProfileElement.$$('#message-container'); | 220 createProfileElement.$$('#message-container'); |
| 225 assertTrue(messageContainer.clientHeight > 0); | 221 assertTrue(messageContainer.clientHeight > 0); |
| 226 // Error message is set. | 222 // Error message is set. |
| 227 var message = loadTimeData.getString( | 223 var message = loadTimeData.getString( |
| 228 'noSupervisedUserImportText'); | 224 'noSupervisedUserImportText'); |
| 229 assertEquals(message, createProfileElement.$.message.innerHTML); | 225 assertEquals(message, createProfileElement.$.message.innerHTML); |
| 230 }); | 226 }); |
| 231 }); | 227 }); |
| 232 | 228 |
| 233 test('Create supervised profile', function() { | 229 test('Create supervised profile', function() { |
| 234 // Simulate checking the supervised user checkbox. | 230 // Simulate checking the supervised user checkbox. |
| 235 MockInteractions.tap( | 231 MockInteractions.tap( |
| 236 createProfileElement.$$("#makeSupervisedCheckbox")); | 232 createProfileElement.$$("#makeSupervisedCheckbox")); |
| 237 Polymer.dom.flush(); | 233 Polymer.dom.flush(); |
| 238 | 234 |
| 239 // Select the first signed in user. | 235 // Select the first signed in user. |
| 240 var dropdownMenu = createProfileElement.$$('paper-dropdown-menu'); | 236 selectFirstSignedInUser(createProfileElement.$$('.md-select')); |
| 241 var selector = dropdownMenu.querySelector('paper-listbox'); | |
| 242 selector.selected = 0; | |
| 243 | 237 |
| 244 // Simulate clicking 'Create'. | 238 // Simulate clicking 'Create'. |
| 245 MockInteractions.tap(createProfileElement.$.save); | 239 MockInteractions.tap(createProfileElement.$.save); |
| 246 | 240 |
| 247 return browserProxy.whenCalled('createProfile').then(function(args) { | 241 return browserProxy.whenCalled('createProfile').then(function(args) { |
| 248 assertEquals('profile name', args.profileName); | 242 assertEquals('profile name', args.profileName); |
| 249 assertEquals('icon1.png', args.profileIconUrl); | 243 assertEquals('icon1.png', args.profileIconUrl); |
| 250 assertFalse(args.createShortcut); | 244 assertFalse(args.createShortcut); |
| 251 assertTrue(args.isSupervised); | 245 assertTrue(args.isSupervised); |
| 252 assertEquals('', args.supervisedUserId); | 246 assertEquals('', args.supervisedUserId); |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 test('Handles no signed in users', function() { | 416 test('Handles no signed in users', function() { |
| 423 return browserProxy.whenCalled('getSignedInUsers').then(function() { | 417 return browserProxy.whenCalled('getSignedInUsers').then(function() { |
| 424 assertEquals(0, createProfileElement.signedInUsers_.length); | 418 assertEquals(0, createProfileElement.signedInUsers_.length); |
| 425 | 419 |
| 426 // Simulate checking the supervised user checkbox. | 420 // Simulate checking the supervised user checkbox. |
| 427 MockInteractions.tap( | 421 MockInteractions.tap( |
| 428 createProfileElement.$$("#makeSupervisedCheckbox")); | 422 createProfileElement.$$("#makeSupervisedCheckbox")); |
| 429 Polymer.dom.flush(); | 423 Polymer.dom.flush(); |
| 430 | 424 |
| 431 // The dropdown menu is not visible when there are no signed in users. | 425 // The dropdown menu is not visible when there are no signed in users. |
| 432 assertFalse(!!createProfileElement.$$('paper-dropdown-menu')); | 426 assertFalse(!!createProfileElement.$$('.md-select')); |
| 433 | 427 |
| 434 // Instead a message containing a link to the Help Center on how | 428 // Instead a message containing a link to the Help Center on how |
| 435 // to sign in to Chrome is displaying. | 429 // to sign in to Chrome is displaying. |
| 436 assertTrue(!!createProfileElement.$$('#sign-in-to-chrome')); | 430 assertTrue(!!createProfileElement.$$('#sign-in-to-chrome')); |
| 437 }); | 431 }); |
| 438 }); | 432 }); |
| 439 | 433 |
| 440 test('Create button is disabled', function() { | 434 test('Create button is disabled', function() { |
| 441 assertTrue(createProfileElement.$.save.disabled); | 435 assertTrue(createProfileElement.$.save.disabled); |
| 442 }); | 436 }); |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 552 createProfileElement.$$("#makeSupervisedCheckbox"); | 546 createProfileElement.$$("#makeSupervisedCheckbox"); |
| 553 assertTrue(createSupervisedUserCheckbox.clientHeight > 0); | 547 assertTrue(createSupervisedUserCheckbox.clientHeight > 0); |
| 554 }); | 548 }); |
| 555 }); | 549 }); |
| 556 } | 550 } |
| 557 | 551 |
| 558 return { | 552 return { |
| 559 registerTests: registerTests, | 553 registerTests: registerTests, |
| 560 }; | 554 }; |
| 561 }); | 555 }); |
| OLD | NEW |