Chromium Code Reviews| Index: chrome/browser/ui/webui/options2/certificate_manager_browsertest.js |
| diff --git a/chrome/browser/ui/webui/options2/certificate_manager_browsertest.js b/chrome/browser/ui/webui/options2/certificate_manager_browsertest.js |
| index 5a98285071c7b097358d2152090461ece5c85dda..1d5d69e52b5eb85d89e1496c57e0a6d5b76783ae 100644 |
| --- a/chrome/browser/ui/webui/options2/certificate_manager_browsertest.js |
| +++ b/chrome/browser/ui/webui/options2/certificate_manager_browsertest.js |
| @@ -2,33 +2,206 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +// Mac and Windows go to native certificate manager, and certificate manager |
| +// isn't implemented if OpenSSL is used. |
| +GEN('#if defined(USE_NSS)'); |
| + |
| /** |
| * TestFixture for certificate manager WebUI testing. |
| * @extends {testing.Test} |
| * @constructor |
| **/ |
| -function CertificateManagerWebUITest() {} |
| +function CertificateManagerWebUIBaseTest() {} |
| -CertificateManagerWebUITest.prototype = { |
| +CertificateManagerWebUIBaseTest.prototype = { |
| __proto__: testing.Test.prototype, |
| /** |
| * Browse to the certificate manager. |
| **/ |
| browsePreload: 'chrome://settings-frame/certificates', |
| + |
| + /** @inheritDoc */ |
| + preLoad: function() { |
| + // We can't check cr.isChromeOS in the preLoad since "cr" doesn't exist yet. |
| + // This is copied from chrome/browser/resources/shared/js/cr.js, maybe |
| + // there's a better way to do this. |
| + this.isChromeOS = /CrOS/.test(navigator.userAgent); |
| + |
| + this.makeAndRegisterMockHandler( |
| + [ |
| + 'checkTpmTokenReady', |
| + 'editCaCertificateTrust', |
| + 'exportPersonalCertificate', |
| + 'importPersonalCertificate', |
| + 'importCaCertificate', |
| + 'exportCertificate', |
| + 'deleteCertificate', |
| + 'populateCertificateManager', |
| + 'viewCertificate', |
| + ]); |
| + }, |
| +}; |
| + |
| +/** |
| + * TestFixture for certificate manager WebUI testing. |
| + * @extends {CertificateManagerWebUIBaseTest} |
| + * @constructor |
| + **/ |
| +function CertificateManagerWebUIUnpopulatedTest() {} |
| + |
| +CertificateManagerWebUIUnpopulatedTest.prototype = { |
| + __proto__: CertificateManagerWebUIBaseTest.prototype, |
| + |
| + /** @inheritDoc */ |
| + preLoad: function() { |
| + CertificateManagerWebUIBaseTest.prototype.preLoad.call(this); |
| + |
| + // We expect the populateCertificateManager callback, but do not reply to |
| + // it. This simulates what will be displayed if retrieving the cert list |
| + // from NSS is slow. |
| + this.mockHandler.expects(once()).populateCertificateManager(); |
| + if (this.isChromeOS) |
| + this.mockHandler.expects(atLeastOnce()).checkTpmTokenReady(); |
| + }, |
| +}; |
| + |
| +// Test opening the certificate manager has correct location and buttons have |
| +// correct initial states when onPopulateTree has not been called. |
| +TEST_F('CertificateManagerWebUIUnpopulatedTest', |
| + 'testUnpopulatedCertificateManager', function() { |
| + assertEquals(this.browsePreload, document.location.href); |
| + |
| + expectTrue($('personalCertsTab-view').disabled); |
| + expectTrue($('personalCertsTab-backup').disabled); |
| + expectTrue($('personalCertsTab-delete').disabled); |
| + expectFalse($('personalCertsTab-import').disabled); |
| + if (this.isChromeOS) |
| + expectTrue($('personalCertsTab-import-and-bind').disabled); |
| + |
| + expectTrue($('serverCertsTab-view').disabled); |
| + expectTrue($('serverCertsTab-export').disabled); |
| + expectTrue($('serverCertsTab-delete').disabled); |
| + expectFalse($('serverCertsTab-import').disabled); |
| + if (this.isChromeOS) |
| + expectTrue($('serverCertsTab-import-and-bind').disabled); |
| + |
| + expectTrue($('caCertsTab-view').disabled); |
| + expectTrue($('caCertsTab-edit').disabled); |
| + expectTrue($('caCertsTab-export').disabled); |
| + expectTrue($('caCertsTab-delete').disabled); |
| + expectFalse($('caCertsTab-import').disabled); |
| + if (this.isChromeOS) |
| + expectTrue($('caCertsTab-import-and-bind').disabled); |
| + |
| + expectTrue($('otherCertsTab-view').disabled); |
| + expectTrue($('otherCertsTab-export').disabled); |
| + expectTrue($('otherCertsTab-delete').disabled); |
| + }); |
| + |
| + |
|
Evan Stade
2012/07/13 06:28:21
extra \n
mattm
2012/07/13 20:06:28
Done.
|
| +/** |
| + * TestFixture for certificate manager WebUI testing. |
| + * @extends {CertificateManagerWebUIBaseTest} |
| + * @constructor |
| + **/ |
| +function CertificateManagerWebUITest() {} |
| + |
| +CertificateManagerWebUITest.prototype = { |
| + __proto__: CertificateManagerWebUIBaseTest.prototype, |
| + |
| + /** @inheritDoc */ |
| + preLoad: function() { |
| + CertificateManagerWebUIBaseTest.prototype.preLoad.call(this); |
| + |
| + this.mockHandler.expects(once()).populateCertificateManager().will( |
| + callFunction(function() { |
| + CertificateManager.onPopulateTree( |
|
Evan Stade
2012/07/13 06:28:21
http://google-styleguide.googlecode.com/svn/trunk/
mattm
2012/07/13 20:06:28
Done.
|
| + ['personalCertsTab-tree', |
| + [{'id': 'o1', |
| + 'name': 'org1', |
| + 'subnodes': [ |
| + {'id': 'c1', |
| + 'name': 'cert1', |
| + 'readonly': false, |
| + 'untrusted': false, |
| + 'extractable': true, |
| + }, |
| + ], |
| + }, |
| + ], |
| + ])})); |
| + |
| + if (this.isChromeOS) |
| + this.mockHandler.expects(once()).checkTpmTokenReady().will(callFunction( |
| + function() { |
| + CertificateManager.onCheckTpmTokenReady(true); |
| + })); |
| + }, |
| }; |
| -// Mac and Windows go to native certificate manager, and certificate manager |
| -// isn't implemented if OpenSSL is used. |
| -GEN('#if !defined(USE_NSS)'); |
| -GEN('#define MAYBE_testOpenCertificateManager ' + |
| - 'DISABLED_testOpenCertificateManager'); |
| -GEN('#else'); |
| -GEN('#define MAYBE_testOpenCertificateManager ' + |
| - 'testOpenCertificateManager'); |
| -GEN('#endif // !defined(USE_NSS)'); |
| -// Test opening the certificate manager has correct location. |
| TEST_F('CertificateManagerWebUITest', |
| - 'MAYBE_testOpenCertificateManager', function() { |
| + 'testViewAndDeleteCert', function() { |
| assertEquals(this.browsePreload, document.location.href); |
|
Evan Stade
2012/07/13 06:28:21
this is too much indent by a lot.
mattm
2012/07/13 20:06:28
Done.
|
| + |
| + this.mockHandler.expects(once()).viewCertificate(['c1']); |
| + |
| + expectTrue($('personalCertsTab-view').disabled); |
| + expectTrue($('personalCertsTab-backup').disabled); |
| + expectTrue($('personalCertsTab-delete').disabled); |
| + expectFalse($('personalCertsTab-import').disabled); |
| + if (this.isChromeOS) |
| + expectFalse($('personalCertsTab-import-and-bind').disabled); |
| + |
| + var personalCerts = $('personalCertsTab'); |
| + |
| + // Click on the first folder. |
| + personalCerts.querySelector('div.tree-item').click(); |
| + // Buttons should still be in same state. |
| + expectTrue($('personalCertsTab-view').disabled); |
| + expectTrue($('personalCertsTab-backup').disabled); |
| + expectTrue($('personalCertsTab-delete').disabled); |
| + expectFalse($('personalCertsTab-import').disabled); |
| + if (this.isChromeOS) |
| + expectFalse($('personalCertsTab-import-and-bind').disabled); |
| + |
| + // Click on the first cert. |
| + personalCerts.querySelector('div.tree-item div.tree-item').click(); |
| + // Buttons should now allow you to act on the cert. |
| + expectFalse($('personalCertsTab-view').disabled); |
| + expectFalse($('personalCertsTab-backup').disabled); |
| + expectFalse($('personalCertsTab-delete').disabled); |
| + expectFalse($('personalCertsTab-import').disabled); |
| + if (this.isChromeOS) |
| + expectFalse($('personalCertsTab-import-and-bind').disabled); |
| + |
| + // Click on the view button. |
| + $('personalCertsTab-view').click(); |
| + |
| + Mock4JS.verifyAllMocks(); |
| + Mock4JS.clearMocksToVerify(); |
| + |
| + this.mockHandler.expects(once()).deleteCertificate(['c1']).will( |
| + callFunction(function() { |
| + CertificateManager.onPopulateTree(['personalCertsTab-tree', []]); |
| + })); |
| + |
| + // Click on the delete button. |
| + $('personalCertsTab-delete').click(); |
| + // Click on the ok button in the confirmation overlay. |
| + $('alertOverlayOk').click(); |
| + |
| + // Context sensitive buttons should be disabled. |
| + expectTrue($('personalCertsTab-view').disabled); |
| + expectTrue($('personalCertsTab-backup').disabled); |
| + expectTrue($('personalCertsTab-delete').disabled); |
| + expectFalse($('personalCertsTab-import').disabled); |
| + if (this.isChromeOS) |
| + expectFalse($('personalCertsTab-import-and-bind').disabled); |
| + // Tree should be empty. |
| + expectTrue(personalCerts.querySelector('div.tree-item') === null); |
| }); |
| + |
| +// TODO(mattm): add more tests. |
| + |
| +GEN('#endif // defined(USE_NSS)'); |