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

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

Issue 10837331: Options: s/options2/options/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: wut Created 8 years, 4 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
(Empty)
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
3 // found in the LICENSE file.
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
9 /**
10 * TestFixture for certificate manager WebUI testing.
11 * @extends {testing.Test}
12 * @constructor
13 **/
14 function CertificateManagerWebUIBaseTest() {}
15
16 CertificateManagerWebUIBaseTest.prototype = {
17 __proto__: testing.Test.prototype,
18
19 /**
20 * Browse to the certificate manager.
21 **/
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 },
44 };
45
46 /**
47 * TestFixture for certificate manager WebUI testing.
48 * @extends {CertificateManagerWebUIBaseTest}
49 * @constructor
50 **/
51 function CertificateManagerWebUIUnpopulatedTest() {}
52
53 CertificateManagerWebUIUnpopulatedTest.prototype = {
54 __proto__: CertificateManagerWebUIBaseTest.prototype,
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
87 expectTrue($('caCertsTab-view').disabled);
88 expectTrue($('caCertsTab-edit').disabled);
89 expectTrue($('caCertsTab-export').disabled);
90 expectTrue($('caCertsTab-delete').disabled);
91 expectFalse($('caCertsTab-import').disabled);
92
93 expectTrue($('otherCertsTab-view').disabled);
94 expectTrue($('otherCertsTab-export').disabled);
95 expectTrue($('otherCertsTab-delete').disabled);
96 });
97
98 /**
99 * TestFixture for certificate manager WebUI testing.
100 * @extends {CertificateManagerWebUIBaseTest}
101 * @constructor
102 **/
103 function CertificateManagerWebUITest() {}
104
105 CertificateManagerWebUITest.prototype = {
106 __proto__: CertificateManagerWebUIBaseTest.prototype,
107
108 /** @inheritDoc */
109 preLoad: function() {
110 CertificateManagerWebUIBaseTest.prototype.preLoad.call(this);
111
112 this.mockHandler.expects(once()).populateCertificateManager().will(
113 callFunction(function() {
114 CertificateManager.onPopulateTree(
115 ['personalCertsTab-tree',
116 [{'id': 'o1',
117 'name': 'org1',
118 'subnodes': [
119 {'id': 'c1',
120 'name': 'cert1',
121 'readonly': false,
122 'untrusted': false,
123 'extractable': true,
124 },
125 ],
126 },
127 ],
128 ])}));
129
130 if (this.isChromeOS)
131 this.mockHandler.expects(once()).checkTpmTokenReady().will(callFunction(
132 function() {
133 CertificateManager.onCheckTpmTokenReady(true);
134 }));
135 },
136 };
137
138 TEST_F('CertificateManagerWebUITest',
139 'testViewAndDeleteCert', function() {
140 assertEquals(this.browsePreload, document.location.href);
141
142 this.mockHandler.expects(once()).viewCertificate(['c1']);
143
144 expectTrue($('personalCertsTab-view').disabled);
145 expectTrue($('personalCertsTab-backup').disabled);
146 expectTrue($('personalCertsTab-delete').disabled);
147 expectFalse($('personalCertsTab-import').disabled);
148 if (this.isChromeOS)
149 expectFalse($('personalCertsTab-import-and-bind').disabled);
150
151 var personalCerts = $('personalCertsTab');
152
153 // Click on the first folder.
154 personalCerts.querySelector('div.tree-item').click();
155 // Buttons should still be in same state.
156 expectTrue($('personalCertsTab-view').disabled);
157 expectTrue($('personalCertsTab-backup').disabled);
158 expectTrue($('personalCertsTab-delete').disabled);
159 expectFalse($('personalCertsTab-import').disabled);
160 if (this.isChromeOS)
161 expectFalse($('personalCertsTab-import-and-bind').disabled);
162
163 // Click on the first cert.
164 personalCerts.querySelector('div.tree-item div.tree-item').click();
165 // Buttons should now allow you to act on the cert.
166 expectFalse($('personalCertsTab-view').disabled);
167 expectFalse($('personalCertsTab-backup').disabled);
168 expectFalse($('personalCertsTab-delete').disabled);
169 expectFalse($('personalCertsTab-import').disabled);
170 if (this.isChromeOS)
171 expectFalse($('personalCertsTab-import-and-bind').disabled);
172
173 // Click on the view button.
174 $('personalCertsTab-view').click();
175
176 Mock4JS.verifyAllMocks();
177 Mock4JS.clearMocksToVerify();
178
179 this.mockHandler.expects(once()).deleteCertificate(['c1']).will(callFunction(
180 function() {
181 CertificateManager.onPopulateTree(['personalCertsTab-tree', []]);
182 }));
183
184 // Click on the delete button.
185 $('personalCertsTab-delete').click();
186 // Click on the ok button in the confirmation overlay.
187 $('alertOverlayOk').click();
188
189 // Context sensitive buttons should be disabled.
190 expectTrue($('personalCertsTab-view').disabled);
191 expectTrue($('personalCertsTab-backup').disabled);
192 expectTrue($('personalCertsTab-delete').disabled);
193 expectFalse($('personalCertsTab-import').disabled);
194 if (this.isChromeOS)
195 expectFalse($('personalCertsTab-import-and-bind').disabled);
196 // Tree should be empty.
197 expectTrue(personalCerts.querySelector('div.tree-item') === null);
198 });
199
200 // TODO(mattm): add more tests.
201
202 GEN('#endif // defined(USE_NSS)');
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698