toolkit/mozapps/extensions/test/browser/browser_hotfix.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:4ce52dbdcdbf
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/
3 */
4
5 const PREF_EM_HOTFIX_ID = "extensions.hotfix.id";
6 const PREF_EM_HOTFIX_LASTVERSION = "extensions.hotfix.lastVersion";
7 const PREF_EM_HOTFIX_URL = "extensions.hotfix.url";
8 const PREF_EM_HOTFIX_CERTS = "extensions.hotfix.certs.";
9 const PREF_EM_CERT_CHECKATTRIBUTES = "extensions.hotfix.cert.checkAttributes";
10
11 const PREF_INSTALL_REQUIREBUILTINCERTS = "extensions.install.requireBuiltInCerts";
12 const PREF_UPDATE_REQUIREBUILTINCERTS = "extensions.update.requireBuiltInCerts";
13
14 const PREF_APP_UPDATE_ENABLED = "app.update.enabled";
15 const PREF_APP_UPDATE_URL = "app.update.url";
16
17 const HOTFIX_ID = "hotfix@tests.mozilla.org";
18
19 var gNextTest;
20
21 var SuccessfulInstallListener = {
22 onDownloadCancelled: function(aInstall) {
23 ok(false, "Should not have seen the download cancelled");
24 is(aInstall.addon.id, HOTFIX_ID, "Should have seen the right add-on");
25
26 AddonManager.removeInstallListener(this);
27 gNextTest();
28 },
29
30 onInstallEnded: function(aInstall) {
31 ok(true, "Should have seen the install complete");
32 is(aInstall.addon.id, HOTFIX_ID, "Should have installed the right add-on");
33
34 AddonManager.removeInstallListener(this);
35 aInstall.addon.uninstall();
36 Services.prefs.clearUserPref(PREF_EM_HOTFIX_LASTVERSION);
37 gNextTest();
38 }
39 }
40
41 var FailedInstallListener = {
42 onDownloadCancelled: function(aInstall) {
43 ok(true, "Should have seen the download cancelled");
44 is(aInstall.addon.id, HOTFIX_ID, "Should have seen the right add-on");
45
46 AddonManager.removeInstallListener(this);
47 gNextTest();
48 },
49
50 onInstallEnded: function(aInstall) {
51 ok(false, "Should not have seen the install complete");
52 is(aInstall.addon.id, HOTFIX_ID, "Should have installed the right add-on");
53
54 AddonManager.removeInstallListener(this);
55 aInstall.addon.uninstall();
56 Services.prefs.clearUserPref(PREF_EM_HOTFIX_LASTVERSION);
57 gNextTest();
58 }
59 }
60
61 function test() {
62 waitForExplicitFinish();
63
64 var oldAusUrl = Services.prefs.getDefaultBranch(null).getCharPref(PREF_APP_UPDATE_URL);
65 Services.prefs.getDefaultBranch(null).setCharPref(PREF_APP_UPDATE_URL, TESTROOT + "ausdummy.xml");
66 Services.prefs.setBoolPref(PREF_APP_UPDATE_ENABLED, true);
67 Services.prefs.setBoolPref(PREF_INSTALL_REQUIREBUILTINCERTS, false);
68 Services.prefs.setBoolPref(PREF_UPDATE_REQUIREBUILTINCERTS, false);
69 Services.prefs.setCharPref(PREF_EM_HOTFIX_ID, HOTFIX_ID);
70 var oldURL = Services.prefs.getCharPref(PREF_EM_HOTFIX_URL);
71 Services.prefs.setCharPref(PREF_EM_HOTFIX_URL, TESTROOT + "signed_hotfix.rdf");
72
73 registerCleanupFunction(function() {
74 Services.prefs.setBoolPref(PREF_APP_UPDATE_ENABLED, false);
75 Services.prefs.getDefaultBranch(null).setCharPref(PREF_APP_UPDATE_URL, oldAusUrl);
76 Services.prefs.clearUserPref(PREF_EM_HOTFIX_ID);
77 Services.prefs.setCharPref(PREF_EM_HOTFIX_URL, oldURL);
78 Services.prefs.clearUserPref(PREF_INSTALL_REQUIREBUILTINCERTS);
79 Services.prefs.clearUserPref(PREF_UPDATE_REQUIREBUILTINCERTS);
80
81 Services.prefs.clearUserPref(PREF_EM_CERT_CHECKATTRIBUTES);
82 var prefs = Services.prefs.getChildList(PREF_EM_HOTFIX_CERTS);
83 prefs.forEach(Services.prefs.clearUserPref);
84 });
85
86 run_next_test();
87 }
88
89 function end_test() {
90 finish();
91 }
92
93 add_test(function check_no_cert_checks() {
94 Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, false);
95 AddonManager.addInstallListener(SuccessfulInstallListener);
96
97 gNextTest = run_next_test;
98
99 AddonManagerPrivate.backgroundUpdateCheck();
100 });
101
102 add_test(function check_wrong_cert_fingerprint() {
103 Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true);
104 Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "foo");
105
106 AddonManager.addInstallListener(FailedInstallListener);
107
108 gNextTest = function() {
109 Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint");
110
111 run_next_test();
112 };
113
114 AddonManagerPrivate.backgroundUpdateCheck();
115 });
116
117 add_test(function check_right_cert_fingerprint() {
118 Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true);
119 Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2");
120
121 AddonManager.addInstallListener(SuccessfulInstallListener);
122
123 gNextTest = function() {
124 Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint");
125
126 run_next_test();
127 };
128
129 AddonManagerPrivate.backgroundUpdateCheck();
130 });
131
132 add_test(function check_multi_cert_fingerprint_1() {
133 Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true);
134 Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2");
135 Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint", "foo");
136
137 AddonManager.addInstallListener(SuccessfulInstallListener);
138
139 gNextTest = function() {
140 Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint");
141 Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint");
142
143 run_next_test();
144 };
145
146 AddonManagerPrivate.backgroundUpdateCheck();
147 });
148
149 add_test(function check_multi_cert_fingerprint_2() {
150 Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true);
151 Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "foo");
152 Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2");
153
154 AddonManager.addInstallListener(SuccessfulInstallListener);
155
156 gNextTest = function() {
157 Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint");
158 Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "2.sha1Fingerprint");
159
160 run_next_test();
161 };
162
163 AddonManagerPrivate.backgroundUpdateCheck();
164 });
165
166 add_test(function check_no_cert_no_checks() {
167 Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, false);
168 Services.prefs.setCharPref(PREF_EM_HOTFIX_URL, TESTROOT + "unsigned_hotfix.rdf");
169
170 AddonManager.addInstallListener(SuccessfulInstallListener);
171
172 gNextTest = run_next_test;
173
174 AddonManagerPrivate.backgroundUpdateCheck();
175 });
176
177 add_test(function check_no_cert_cert_fingerprint_check() {
178 Services.prefs.setBoolPref(PREF_EM_CERT_CHECKATTRIBUTES, true);
179 Services.prefs.setCharPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint", "3E:B9:4E:07:12:FE:3C:01:41:46:13:46:FC:84:52:1A:8C:BE:1D:A2");
180
181 AddonManager.addInstallListener(FailedInstallListener);
182
183 gNextTest = function() {
184 Services.prefs.clearUserPref(PREF_EM_HOTFIX_CERTS + "1.sha1Fingerprint");
185
186 run_next_test();
187 };
188
189 AddonManagerPrivate.backgroundUpdateCheck();
190 });

mercurial