Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(888)

Side by Side Diff: chrome/browser/ui/webui/options2/certificate_manager_browsertest.js

Issue 10700195: Fix certificate manager buttons never becoming clickable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: try to fix chromeos check Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // Mac and Windows go to native certificate manager, and certificate manager
6 // isn't implemented if OpenSSL is used.
7 GEN('#if defined(USE_NSS)');
8
5 /** 9 /**
6 * TestFixture for certificate manager WebUI testing. 10 * TestFixture for certificate manager WebUI testing.
7 * @extends {testing.Test} 11 * @extends {testing.Test}
8 * @constructor 12 * @constructor
9 **/ 13 **/
10 function CertificateManagerWebUITest() {} 14 function CertificateManagerWebUIBaseTest() {}
11 15
12 CertificateManagerWebUITest.prototype = { 16 CertificateManagerWebUIBaseTest.prototype = {
13 __proto__: testing.Test.prototype, 17 __proto__: testing.Test.prototype,
14 18
15 /** 19 /**
16 * Browse to the certificate manager. 20 * Browse to the certificate manager.
17 **/ 21 **/
18 browsePreload: 'chrome://settings-frame/certificates', 22 browsePreload: 'chrome://settings-frame/certificates',
23
24 /** @inheritDoc */
25 preLoad: function() {
26 // We can't check cr.isChromeOS in the preLoad since "cr" doesn't exist yet.
27 // This is copied from chrome/browser/resources/shared/js/cr.js, maybe
28 // there's a better way to do this.
29 this.isChromeOS = /CrOS/.test(navigator.userAgent);
30
31 this.makeAndRegisterMockHandler(
32 [
33 'checkTpmTokenReady',
34 'editCaCertificateTrust',
35 'exportPersonalCertificate',
36 'importPersonalCertificate',
37 'importCaCertificate',
38 'exportCertificate',
39 'deleteCertificate',
40 'populateCertificateManager',
41 'viewCertificate',
42 ]);
43 },
19 }; 44 };
20 45
21 // Mac and Windows go to native certificate manager, and certificate manager 46 /**
22 // isn't implemented if OpenSSL is used. 47 * TestFixture for certificate manager WebUI testing.
23 GEN('#if !defined(USE_NSS)'); 48 * @extends {CertificateManagerWebUIBaseTest}
24 GEN('#define MAYBE_testOpenCertificateManager ' + 49 * @constructor
25 'DISABLED_testOpenCertificateManager'); 50 **/
26 GEN('#else'); 51 function CertificateManagerWebUIUnpopulatedTest() {}
27 GEN('#define MAYBE_testOpenCertificateManager ' + 52
28 'testOpenCertificateManager'); 53 CertificateManagerWebUIUnpopulatedTest.prototype = {
29 GEN('#endif // !defined(USE_NSS)'); 54 __proto__: CertificateManagerWebUIBaseTest.prototype,
30 // Test opening the certificate manager has correct location. 55
56 /** @inheritDoc */
57 preLoad: function() {
58 CertificateManagerWebUIBaseTest.prototype.preLoad.call(this);
59
60 // We expect the populateCertificateManager callback, but do not reply to
61 // it. This simulates what will be displayed if retrieving the cert list
62 // from NSS is slow.
63 this.mockHandler.expects(once()).populateCertificateManager();
64 if (this.isChromeOS)
65 this.mockHandler.expects(atLeastOnce()).checkTpmTokenReady();
66 },
67 };
68
69 // Test opening the certificate manager has correct location and buttons have
70 // correct initial states when onPopulateTree has not been called.
71 TEST_F('CertificateManagerWebUIUnpopulatedTest',
72 'testUnpopulatedCertificateManager', function() {
73 assertEquals(this.browsePreload, document.location.href);
74
75 expectTrue($('personalCertsTab-view').disabled);
76 expectTrue($('personalCertsTab-backup').disabled);
77 expectTrue($('personalCertsTab-delete').disabled);
78 expectFalse($('personalCertsTab-import').disabled);
79 if (this.isChromeOS)
80 expectTrue($('personalCertsTab-import-and-bind').disabled);
81
82 expectTrue($('serverCertsTab-view').disabled);
83 expectTrue($('serverCertsTab-export').disabled);
84 expectTrue($('serverCertsTab-delete').disabled);
85 expectFalse($('serverCertsTab-import').disabled);
86 if (this.isChromeOS)
87 expectTrue($('serverCertsTab-import-and-bind').disabled);
88
89 expectTrue($('caCertsTab-view').disabled);
90 expectTrue($('caCertsTab-edit').disabled);
91 expectTrue($('caCertsTab-export').disabled);
92 expectTrue($('caCertsTab-delete').disabled);
93 expectFalse($('caCertsTab-import').disabled);
94 if (this.isChromeOS)
95 expectTrue($('caCertsTab-import-and-bind').disabled);
96
97 expectTrue($('otherCertsTab-view').disabled);
98 expectTrue($('otherCertsTab-export').disabled);
99 expectTrue($('otherCertsTab-delete').disabled);
100 });
101
102
Evan Stade 2012/07/13 06:28:21 extra \n
mattm 2012/07/13 20:06:28 Done.
103 /**
104 * TestFixture for certificate manager WebUI testing.
105 * @extends {CertificateManagerWebUIBaseTest}
106 * @constructor
107 **/
108 function CertificateManagerWebUITest() {}
109
110 CertificateManagerWebUITest.prototype = {
111 __proto__: CertificateManagerWebUIBaseTest.prototype,
112
113 /** @inheritDoc */
114 preLoad: function() {
115 CertificateManagerWebUIBaseTest.prototype.preLoad.call(this);
116
117 this.mockHandler.expects(once()).populateCertificateManager().will(
118 callFunction(function() {
119 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.
120 ['personalCertsTab-tree',
121 [{'id': 'o1',
122 'name': 'org1',
123 'subnodes': [
124 {'id': 'c1',
125 'name': 'cert1',
126 'readonly': false,
127 'untrusted': false,
128 'extractable': true,
129 },
130 ],
131 },
132 ],
133 ])}));
134
135 if (this.isChromeOS)
136 this.mockHandler.expects(once()).checkTpmTokenReady().will(callFunction(
137 function() {
138 CertificateManager.onCheckTpmTokenReady(true);
139 }));
140 },
141 };
142
31 TEST_F('CertificateManagerWebUITest', 143 TEST_F('CertificateManagerWebUITest',
32 'MAYBE_testOpenCertificateManager', function() { 144 'testViewAndDeleteCert', function() {
33 assertEquals(this.browsePreload, document.location.href); 145 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.
146
147 this.mockHandler.expects(once()).viewCertificate(['c1']);
148
149 expectTrue($('personalCertsTab-view').disabled);
150 expectTrue($('personalCertsTab-backup').disabled);
151 expectTrue($('personalCertsTab-delete').disabled);
152 expectFalse($('personalCertsTab-import').disabled);
153 if (this.isChromeOS)
154 expectFalse($('personalCertsTab-import-and-bind').disabled);
155
156 var personalCerts = $('personalCertsTab');
157
158 // Click on the first folder.
159 personalCerts.querySelector('div.tree-item').click();
160 // Buttons should still be in same state.
161 expectTrue($('personalCertsTab-view').disabled);
162 expectTrue($('personalCertsTab-backup').disabled);
163 expectTrue($('personalCertsTab-delete').disabled);
164 expectFalse($('personalCertsTab-import').disabled);
165 if (this.isChromeOS)
166 expectFalse($('personalCertsTab-import-and-bind').disabled);
167
168 // Click on the first cert.
169 personalCerts.querySelector('div.tree-item div.tree-item').click();
170 // Buttons should now allow you to act on the cert.
171 expectFalse($('personalCertsTab-view').disabled);
172 expectFalse($('personalCertsTab-backup').disabled);
173 expectFalse($('personalCertsTab-delete').disabled);
174 expectFalse($('personalCertsTab-import').disabled);
175 if (this.isChromeOS)
176 expectFalse($('personalCertsTab-import-and-bind').disabled);
177
178 // Click on the view button.
179 $('personalCertsTab-view').click();
180
181 Mock4JS.verifyAllMocks();
182 Mock4JS.clearMocksToVerify();
183
184 this.mockHandler.expects(once()).deleteCertificate(['c1']).will(
185 callFunction(function() {
186 CertificateManager.onPopulateTree(['personalCertsTab-tree', []]);
187 }));
188
189 // Click on the delete button.
190 $('personalCertsTab-delete').click();
191 // Click on the ok button in the confirmation overlay.
192 $('alertOverlayOk').click();
193
194 // Context sensitive buttons should be disabled.
195 expectTrue($('personalCertsTab-view').disabled);
196 expectTrue($('personalCertsTab-backup').disabled);
197 expectTrue($('personalCertsTab-delete').disabled);
198 expectFalse($('personalCertsTab-import').disabled);
199 if (this.isChromeOS)
200 expectFalse($('personalCertsTab-import-and-bind').disabled);
201 // Tree should be empty.
202 expectTrue(personalCerts.querySelector('div.tree-item') === null);
34 }); 203 });
204
205 // TODO(mattm): add more tests.
206
207 GEN('#endif // defined(USE_NSS)');
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698