Chromium Code Reviews| Index: chrome/test/data/webui/settings/settings_passwords_section_browsertest.js |
| diff --git a/chrome/test/data/webui/settings/settings_passwords_section_browsertest.js b/chrome/test/data/webui/settings/settings_passwords_section_browsertest.js |
| index afc5ee581af03b6aa8dcedf9fe2378e76a58f42e..5b62d2e583b2fa432b492c70f003718dcd92527f 100644 |
| --- a/chrome/test/data/webui/settings/settings_passwords_section_browsertest.js |
| +++ b/chrome/test/data/webui/settings/settings_passwords_section_browsertest.js |
| @@ -34,12 +34,14 @@ SettingsPasswordSectionBrowserTest.prototype = { |
| /** @override */ |
| setUp: function() { |
| PolymerTest.prototype.setUp.call(this); |
| - PolymerTest.clearBody(); |
|
Dan Beam
2017/02/15 23:19:39
why are you removing this?
hcarmona
2017/02/16 00:00:01
Moved it to Mocha's setup so it runs between each
|
| - |
| // Test is run on an individual element that won't have a page language. |
| this.accessibilityAuditConfig.auditRulesToIgnore.push('humanLangMissing'); |
| }, |
| +}; |
| + |
| +/** This test will validate that the section is loaded with data. */ |
| +TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| /** |
| * Helper method that validates a that elements in the password list match |
| * the expected data. |
| @@ -48,7 +50,7 @@ SettingsPasswordSectionBrowserTest.prototype = { |
| * expected data. |
| * @private |
| */ |
| - validatePasswordList: function(listElement, passwordList) { |
| + function validatePasswordList(listElement, passwordList) { |
| assertEquals(passwordList.length, listElement.items.length); |
| if (passwordList.length > 0) { |
| // The first child is a template, skip and get the real 'first child'. |
| @@ -64,7 +66,7 @@ SettingsPasswordSectionBrowserTest.prototype = { |
| assertEquals(passwordInfo.numCharactersInPassword, |
| node.querySelector('#password').value.length); |
| } |
| - }, |
| + } |
| /** |
| * Helper method that validates a that elements in the exception list match |
| @@ -74,7 +76,7 @@ SettingsPasswordSectionBrowserTest.prototype = { |
| * expected data. |
| * @private |
| */ |
| - validateExceptionList_: function(nodes, exceptionList) { |
| + function validateExceptionList(nodes, exceptionList) { |
| assertEquals(exceptionList.length, nodes.length); |
| for (var index = 0; index < exceptionList.length; ++index) { |
| var node = nodes[index]; |
| @@ -84,7 +86,7 @@ SettingsPasswordSectionBrowserTest.prototype = { |
| assertEquals(exception.linkUrl, |
| node.querySelector('#exception').href); |
| } |
| - }, |
| + } |
| /** |
| * Returns all children of an element that has children added by a dom-repeat. |
| @@ -92,27 +94,41 @@ SettingsPasswordSectionBrowserTest.prototype = { |
| * @return {!Array<!Element>} |
| * @private |
| */ |
| - getDomRepeatChildren_: function(element) { |
| + function getDomRepeatChildren(element) { |
| var nodes = element.querySelectorAll('.list-item:not([id])'); |
| return nodes; |
| - }, |
| + } |
| + |
| + /** |
| + * Allow the iron-list to be sized properly. |
| + * @param {!Object} passwordsSection |
| + * @private |
| + */ |
| + function flushPasswordSection(passwordsSection) { |
| + passwordsSection.$.passwordList.notifyResize(); |
| + Polymer.dom.flush(); |
| + } |
| /** |
| * Helper method used to create a password section for the given lists. |
| + * @param {!PasswordManager} passwordManager |
| * @param {!Array<!chrome.passwordsPrivate.PasswordUiEntry>} passwordList |
| * @param {!Array<!chrome.passwordsPrivate.ExceptionPair>} exceptionList |
| * @return {!Object} |
| * @private |
| */ |
| - createPasswordsSection_: function(passwordList, exceptionList) { |
| + function createPasswordsSection(passwordManager, passwordList, |
| + exceptionList) { |
| + // Override the PasswordManager data for testing. |
| + passwordManager.data.passwords = passwordList; |
| + passwordManager.data.exceptions = exceptionList; |
| + |
| // Create a passwords-section to use for testing. |
| var passwordsSection = document.createElement('passwords-section'); |
| - passwordsSection.savedPasswords = passwordList; |
| - passwordsSection.passwordExceptions = exceptionList; |
| document.body.appendChild(passwordsSection); |
| - this.flushPasswordSection_(passwordsSection); |
| + flushPasswordSection(passwordsSection); |
| return passwordsSection; |
| - }, |
| + } |
| /** |
| * Helper method used to create a password editing dialog. |
| @@ -120,60 +136,55 @@ SettingsPasswordSectionBrowserTest.prototype = { |
| * @return {!Object} |
| * @private |
| */ |
| - createPasswordDialog_: function(passwordItem) { |
| + function createPasswordDialog(passwordItem) { |
| var passwordDialog = document.createElement('password-edit-dialog'); |
| passwordDialog.item = passwordItem; |
| document.body.appendChild(passwordDialog); |
| Polymer.dom.flush(); |
| return passwordDialog; |
| - }, |
| + } |
| /** |
| * Helper method used to test for a url in a list of passwords. |
| * @param {!Array<!chrome.passwordsPrivate.PasswordUiEntry>} passwordList |
| * @param {string} url The URL that is being searched for. |
| */ |
| - listContainsUrl(passwordList, url) { |
| + function listContainsUrl(passwordList, url) { |
| for (var i = 0; i < passwordList.length; ++i) { |
| if (passwordList[i].loginPair.originUrl == url) |
| return true; |
| } |
| return false; |
| - }, |
| + } |
| /** |
| * Helper method used to test for a url in a list of passwords. |
| * @param {!Array<!chrome.passwordsPrivate.ExceptionPair>} exceptionList |
| * @param {string} url The URL that is being searched for. |
| */ |
| - exceptionsListContainsUrl(exceptionList, url) { |
| + function exceptionsListContainsUrl(exceptionList, url) { |
| for (var i = 0; i < exceptionList.length; ++i) { |
| if (exceptionList[i].exceptionUrl == url) |
| return true; |
| } |
| return false; |
| - }, |
| - |
| - /** |
| - * Allow the iron-list to be sized properly. |
| - * @param {!Object} passwordsSection |
| - * @private |
| - */ |
| - flushPasswordSection_: function(passwordsSection) { |
| - passwordsSection.$.passwordList.notifyResize(); |
| - Polymer.dom.flush(); |
| - }, |
| -}; |
| - |
| -/** This test will validate that the section is loaded with data. */ |
| -TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| - var self = this; |
| + } |
| suite('PasswordsSection', function() { |
| + /** @type {TestPasswordManager} */ |
| + var passwordManager = null; |
| + |
| + setup(function() { |
| + PolymerTest.clearBody(); |
| + // Override the PasswordManagerImpl for testing. |
| + passwordManager = new TestPasswordManager(); |
| + PasswordManagerImpl.instance_ = passwordManager; |
| + }); |
| + |
| test('verifyNoSavedPasswords', function() { |
| - var passwordsSection = self.createPasswordsSection_([], []); |
| + var passwordsSection = createPasswordsSection(passwordManager, [], []); |
| - self.validatePasswordList(passwordsSection.$.passwordList, []); |
| + validatePasswordList(passwordsSection.$.passwordList, []); |
| assertFalse(passwordsSection.$.noPasswordsLabel.hidden); |
| assertTrue(passwordsSection.$.savedPasswordsHeading.hidden); |
| @@ -189,13 +200,14 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| FakeDataMaker.passwordEntry('site2.com', 'luigi', 8), |
| ]; |
| - var passwordsSection = self.createPasswordsSection_(passwordList, []); |
| + var passwordsSection = createPasswordsSection( |
| + passwordManager, passwordList, []); |
| // Assert that the data is passed into the iron list. If this fails, |
| // then other expectations will also fail. |
| assertEquals(passwordList, passwordsSection.$.passwordList.items); |
| - self.validatePasswordList(passwordsSection.$.passwordList, passwordList); |
| + validatePasswordList(passwordsSection.$.passwordList, passwordList); |
| assertTrue(passwordsSection.$.noPasswordsLabel.hidden); |
| assertFalse(passwordsSection.$.savedPasswordsHeading.hidden); |
| @@ -209,18 +221,19 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| FakeDataMaker.passwordEntry('website.com', 'mario', 70) |
| ]; |
| - var passwordsSection = self.createPasswordsSection_(passwordList, []); |
| + var passwordsSection = createPasswordsSection( |
| + passwordManager, passwordList, []); |
| - self.validatePasswordList(passwordsSection.$.passwordList, passwordList); |
| + validatePasswordList(passwordsSection.$.passwordList, passwordList); |
| // Simulate 'longwebsite.com' being removed from the list. |
| passwordsSection.splice('savedPasswords', 1, 1); |
| - self.flushPasswordSection_(passwordsSection); |
| + flushPasswordSection(passwordsSection); |
| - assertFalse(self.listContainsUrl(passwordsSection.savedPasswords, |
| + assertFalse(listContainsUrl(passwordsSection.savedPasswords, |
| 'longwebsite.com')); |
| - assertFalse(self.listContainsUrl(passwordList, 'longwebsite.com')); |
| + assertFalse(listContainsUrl(passwordList, 'longwebsite.com')); |
| - self.validatePasswordList(passwordsSection.$.passwordList, passwordList); |
| + validatePasswordList(passwordsSection.$.passwordList, passwordList); |
| }); |
| // Test verifies that pressing the 'remove' button will trigger a remove |
| @@ -235,24 +248,24 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| FakeDataMaker.passwordEntry('six', 'one', 6), |
| ]; |
| - var passwordsSection = self.createPasswordsSection_(passwordList, []); |
| + var passwordsSection = createPasswordsSection( |
| + passwordManager, passwordList, []); |
| // The first child is a template, skip and get the real 'first child'. |
| var firstNode = Polymer.dom(passwordsSection.$.passwordList).children[1]; |
| assert(firstNode); |
| var firstPassword = passwordList[0]; |
| - // Listen for the remove event. If this event isn't received, the test |
| - // will time out and fail. |
| - passwordsSection.addEventListener('remove-saved-password', |
| - function(event) { |
| + passwordManager.onRemoveSavedPassword = function(detail) { |
| // Verify that the event matches the expected value. |
| - assertEquals(firstPassword.loginPair.originUrl, |
| - event.detail.originUrl); |
| - assertEquals(firstPassword.loginPair.username, |
| - event.detail.username); |
| + assertEquals(firstPassword.loginPair.originUrl, detail.originUrl); |
| + assertEquals(firstPassword.loginPair.username, detail.username); |
| + |
| + // Clean up after self. |
| + passwordManager.onRemoveSavedPassword = null; |
| + |
| done(); |
| - }); |
| + }; |
| // Click the remove button on the first password. |
| MockInteractions.tap(firstNode.querySelector('#passwordMenu')); |
| @@ -269,7 +282,8 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| FakeDataMaker.passwordEntry('six-show.com', 'one', 6), |
| ]; |
| - var passwordsSection = self.createPasswordsSection_(passwordList, []); |
| + var passwordsSection = createPasswordsSection( |
| + passwordManager, passwordList, []); |
| passwordsSection.filter = 'show'; |
| Polymer.dom.flush(); |
| @@ -280,7 +294,7 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| FakeDataMaker.passwordEntry('six-show.com', 'one', 6), |
| ]; |
| - self.validatePasswordList(passwordsSection.$.passwordList, expectedList); |
| + validatePasswordList(passwordsSection.$.passwordList, expectedList); |
| }); |
| test('verifyFilterPasswordExceptions', function() { |
| @@ -293,7 +307,8 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| FakeDataMaker.exceptionEntry('plus.google.comshow'), |
| ]; |
| - var passwordsSection = self.createPasswordsSection_([], exceptionList); |
| + var passwordsSection = createPasswordsSection( |
| + passwordManager, [], exceptionList); |
| passwordsSection.filter = 'show'; |
| Polymer.dom.flush(); |
| @@ -304,16 +319,16 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| FakeDataMaker.exceptionEntry('plus.google.comshow'), |
| ]; |
| - self.validateExceptionList_( |
| - self.getDomRepeatChildren_(passwordsSection.$.passwordExceptionsList), |
| + validateExceptionList( |
| + getDomRepeatChildren(passwordsSection.$.passwordExceptionsList), |
| expectedExceptionList); |
| }); |
| test('verifyNoPasswordExceptions', function() { |
| - var passwordsSection = self.createPasswordsSection_([], []); |
| + var passwordsSection = createPasswordsSection(passwordManager, [], []); |
| - self.validateExceptionList_( |
| - self.getDomRepeatChildren_(passwordsSection.$.passwordExceptionsList), |
| + validateExceptionList( |
| + getDomRepeatChildren(passwordsSection.$.passwordExceptionsList), |
| []); |
| assertFalse(passwordsSection.$.noExceptionsLabel.hidden); |
| @@ -329,10 +344,11 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| FakeDataMaker.exceptionEntry('plus.google.com'), |
| ]; |
| - var passwordsSection = self.createPasswordsSection_([], exceptionList); |
| + var passwordsSection = createPasswordsSection( |
| + passwordManager, [], exceptionList); |
| - self.validateExceptionList_( |
| - self.getDomRepeatChildren_(passwordsSection.$.passwordExceptionsList), |
| + validateExceptionList( |
| + getDomRepeatChildren(passwordsSection.$.passwordExceptionsList), |
| exceptionList); |
| assertTrue(passwordsSection.$.noExceptionsLabel.hidden); |
| @@ -349,21 +365,22 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| FakeDataMaker.exceptionEntry('plus.google.com'), |
| ]; |
| - var passwordsSection = self.createPasswordsSection_([], exceptionList); |
| + var passwordsSection = createPasswordsSection( |
| + passwordManager, [], exceptionList); |
| - self.validateExceptionList_( |
| - self.getDomRepeatChildren_(passwordsSection.$.passwordExceptionsList), |
| + validateExceptionList( |
| + getDomRepeatChildren(passwordsSection.$.passwordExceptionsList), |
| exceptionList); |
| // Simulate 'mail.com' being removed from the list. |
| passwordsSection.splice('passwordExceptions', 1, 1); |
| - assertFalse(self.exceptionsListContainsUrl( |
| + assertFalse(exceptionsListContainsUrl( |
| passwordsSection.passwordExceptions, 'mail.com')); |
| - assertFalse(self.exceptionsListContainsUrl(exceptionList, 'mail.com')); |
| - self.flushPasswordSection_(passwordsSection); |
| + assertFalse(exceptionsListContainsUrl(exceptionList, 'mail.com')); |
| + flushPasswordSection(passwordsSection); |
| - self.validateExceptionList_( |
| - self.getDomRepeatChildren_(passwordsSection.$.passwordExceptionsList), |
| + validateExceptionList( |
| + getDomRepeatChildren(passwordsSection.$.passwordExceptionsList), |
| exceptionList); |
| }); |
| @@ -379,10 +396,11 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| FakeDataMaker.exceptionEntry('plus.google.com'), |
| ]; |
| - var passwordsSection = self.createPasswordsSection_([], exceptionList); |
| + var passwordsSection = createPasswordsSection( |
| + passwordManager, [], exceptionList); |
| var exceptions = |
| - self.getDomRepeatChildren_(passwordsSection.$.passwordExceptionsList); |
| + getDomRepeatChildren(passwordsSection.$.passwordExceptionsList); |
| // The index of the button currently being checked. |
| var index = 0; |
| @@ -392,19 +410,20 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| exceptions[index].querySelector('#removeExceptionButton')); |
| }; |
| - // Listen for the remove event. If this event isn't received, the test |
| - // will time out and fail. |
| - passwordsSection.addEventListener('remove-password-exception', |
| - function(event) { |
| + passwordManager.onRemoveException = function(detail) { |
| // Verify that the event matches the expected value. |
| assertTrue(index < exceptionList.length); |
| - assertEquals(exceptionList[index].exceptionUrl, event.detail); |
| + assertEquals(exceptionList[index].exceptionUrl, detail); |
| - if (++index < exceptionList.length) |
| + if (++index < exceptionList.length) { |
| clickRemoveButton(); // Click 'remove' on all passwords, one by one. |
| - else |
| + } else { |
| + // Clean up after self. |
| + passwordManager.onRemoveException = null; |
| + |
| done(); |
| - }); |
| + } |
| + }; |
| // Start removing. |
| clickRemoveButton(); |
| @@ -413,7 +432,7 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| test('showSavedPassword', function() { |
| var PASSWORD = 'bAn@n@5'; |
| var item = FakeDataMaker.passwordEntry('goo.gl', 'bart', PASSWORD.length); |
| - var passwordDialog = self.createPasswordDialog_(item); |
| + var passwordDialog = createPasswordDialog(item); |
| passwordDialog.password = PASSWORD; |
| passwordDialog.showPassword = true; |
| @@ -430,7 +449,7 @@ TEST_F('SettingsPasswordSectionBrowserTest', 'uiTests', function() { |
| // Test will timeout if event is not received. |
| test('onShowSavedPassword', function(done) { |
| var item = FakeDataMaker.passwordEntry('goo.gl', 'bart', 1); |
| - var passwordDialog = self.createPasswordDialog_(item); |
| + var passwordDialog = createPasswordDialog(item); |
| passwordDialog.addEventListener('show-password', function(event) { |
| assertEquals(item.loginPair.originUrl, event.detail.originUrl); |