|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
4 */ |
|
5 |
|
6 function run_test() { |
|
7 setupTestCommon(); |
|
8 |
|
9 logTestInfo("testing addition of a successful update to " + FILE_UPDATES_DB + |
|
10 " and verification of update properties including the format " + |
|
11 "prior to bug 530872"); |
|
12 |
|
13 setUpdateChannel("test_channel"); |
|
14 |
|
15 var patch, patches, update, updates; |
|
16 // XXXrstrong - not specifying a detailsURL will cause a leak due to bug 470244 |
|
17 // and until bug 470244 is fixed this will not test the value for detailsURL |
|
18 // when it isn't specified in the update xml. |
|
19 patches = getLocalPatchString("partial", "http://partial/", "SHA256", "cd43", |
|
20 "86", "true", STATE_PENDING); |
|
21 updates = getLocalUpdateString(patches, "major", "New", "version 4", "4.0", |
|
22 "4.0", "20070811053724", "http://details1/", |
|
23 "http://billboard1/", "http://license1/", |
|
24 "http://service1/", "1238441300314", |
|
25 "test status text", "false", "test_channel", |
|
26 "true", "true", "true", "345600", "true", |
|
27 "test version", "3.0", "3.0", |
|
28 "custom1_attr=\"custom1 value\"", |
|
29 "custom2_attr=\"custom2 value\""); |
|
30 |
|
31 writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true); |
|
32 writeStatusFile(STATE_SUCCEEDED); |
|
33 |
|
34 patches = getLocalPatchString("complete", "http://complete/", "SHA1", "6232", |
|
35 "75", "true", STATE_FAILED); |
|
36 updates = getLocalUpdateString(patches, "major", "Existing", null, null, |
|
37 "3.0", null, "http://details2/", null, null, |
|
38 "http://service2/", null, |
|
39 getString("patchApplyFailure"), "true", |
|
40 "test_channel", "false", null, null, "691200", |
|
41 null, "version 3", "3.0", null, |
|
42 "custom3_attr=\"custom3 value\"", |
|
43 "custom4_attr=\"custom4 value\""); |
|
44 writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), false); |
|
45 |
|
46 standardInit(); |
|
47 |
|
48 do_check_eq(gUpdateManager.activeUpdate, null); |
|
49 do_check_eq(gUpdateManager.updateCount, 2); |
|
50 |
|
51 update = gUpdateManager.getUpdateAt(0).QueryInterface(AUS_Ci.nsIPropertyBag); |
|
52 do_check_eq(update.state, STATE_SUCCEEDED); |
|
53 do_check_eq(update.type, "major"); |
|
54 do_check_eq(update.name, "New"); |
|
55 do_check_eq(update.displayVersion, "version 4"); |
|
56 do_check_eq(update.appVersion, "4.0"); |
|
57 do_check_eq(update.platformVersion, "4.0"); |
|
58 do_check_eq(update.buildID, "20070811053724"); |
|
59 do_check_eq(update.detailsURL, "http://details1/"); |
|
60 do_check_eq(update.billboardURL, "http://billboard1/"); |
|
61 do_check_eq(update.licenseURL, "http://license1/"); |
|
62 do_check_eq(update.serviceURL, "http://service1/"); |
|
63 do_check_eq(update.installDate, "1238441300314"); |
|
64 // statusText is updated |
|
65 do_check_eq(update.statusText, getString("installSuccess")); |
|
66 do_check_false(update.isCompleteUpdate); |
|
67 do_check_eq(update.channel, "test_channel"); |
|
68 do_check_true(update.showPrompt); |
|
69 do_check_true(update.showNeverForVersion); |
|
70 do_check_eq(update.promptWaitTime, "345600"); |
|
71 do_check_eq(update.previousAppVersion, "3.0"); |
|
72 // Custom attributes |
|
73 do_check_eq(update.getProperty("custom1_attr"), "custom1 value"); |
|
74 do_check_eq(update.getProperty("custom2_attr"), "custom2 value"); |
|
75 |
|
76 patch = update.selectedPatch; |
|
77 do_check_eq(patch.type, "partial"); |
|
78 do_check_eq(patch.URL, "http://partial/"); |
|
79 do_check_eq(patch.hashFunction, "SHA256"); |
|
80 do_check_eq(patch.hashValue, "cd43"); |
|
81 do_check_eq(patch.size, "86"); |
|
82 do_check_true(patch.selected); |
|
83 do_check_eq(patch.state, STATE_SUCCEEDED); |
|
84 |
|
85 update = gUpdateManager.getUpdateAt(1).QueryInterface(AUS_Ci.nsIPropertyBag); |
|
86 do_check_eq(update.state, STATE_FAILED); |
|
87 do_check_eq(update.name, "Existing"); |
|
88 do_check_eq(update.type, "major"); |
|
89 do_check_eq(update.displayVersion, "version 3"); |
|
90 do_check_eq(update.appVersion, "3.0"); |
|
91 do_check_eq(update.platformVersion, "3.0"); |
|
92 do_check_eq(update.detailsURL, "http://details2/"); |
|
93 do_check_eq(update.billboardURL, "http://details2/"); |
|
94 do_check_eq(update.licenseURL, null); |
|
95 do_check_eq(update.serviceURL, "http://service2/"); |
|
96 do_check_eq(update.installDate, "1238441400314"); |
|
97 do_check_eq(update.statusText, getString("patchApplyFailure")); |
|
98 do_check_eq(update.buildID, "20080811053724"); |
|
99 do_check_true(update.isCompleteUpdate); |
|
100 do_check_eq(update.channel, "test_channel"); |
|
101 do_check_true(update.showPrompt); |
|
102 do_check_true(update.showNeverForVersion); |
|
103 do_check_eq(update.promptWaitTime, "691200"); |
|
104 do_check_eq(update.previousAppVersion, null); |
|
105 // Custom attributes |
|
106 do_check_eq(update.getProperty("custom3_attr"), "custom3 value"); |
|
107 do_check_eq(update.getProperty("custom4_attr"), "custom4 value"); |
|
108 |
|
109 patch = update.selectedPatch; |
|
110 do_check_eq(patch.type, "complete"); |
|
111 do_check_eq(patch.URL, "http://complete/"); |
|
112 do_check_eq(patch.hashFunction, "SHA1"); |
|
113 do_check_eq(patch.hashValue, "6232"); |
|
114 do_check_eq(patch.size, "75"); |
|
115 do_check_true(patch.selected); |
|
116 do_check_eq(patch.state, STATE_FAILED); |
|
117 |
|
118 removeUpdateDirsAndFiles(); |
|
119 |
|
120 // XXXrstrong - not specifying a detailsURL will cause a leak due to bug 470244 |
|
121 // and until this is fixed this will not test the value for detailsURL when it |
|
122 // isn't specified in the update xml. |
|
123 patches = getLocalPatchString(null, null, null, null, null, null, |
|
124 STATE_PENDING); |
|
125 updates = getLocalUpdateString(patches, "major", "New", null, null, "4.0", |
|
126 null, "http://details/", "http://billboard/", |
|
127 "http://license/", "http://service/", |
|
128 "1238441400314", "test status text", null, |
|
129 "test_channel", "true", "true", "true", "100", |
|
130 "true", "version 4.0", "4.0", "3.0"); |
|
131 |
|
132 writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true); |
|
133 writeStatusFile(STATE_SUCCEEDED); |
|
134 |
|
135 patches = getLocalPatchString(null, null, null, null, null, null, |
|
136 STATE_FAILED); |
|
137 updates = getLocalUpdateString(patches, "major", "Existing", "version 3.0", |
|
138 "3.0", "3.0", null, "http://details/", null, |
|
139 null, "http://service/", null, |
|
140 getString("patchApplyFailure"), null, |
|
141 "test_channel", "false", null, null, "200", |
|
142 null, "version 3", null, null); |
|
143 writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), false); |
|
144 |
|
145 reloadUpdateManagerData(); |
|
146 initUpdateServiceStub(); |
|
147 |
|
148 do_check_eq(gUpdateManager.activeUpdate, null); |
|
149 do_check_eq(gUpdateManager.updateCount, 2); |
|
150 |
|
151 update = gUpdateManager.getUpdateAt(0); |
|
152 do_check_eq(update.state, STATE_SUCCEEDED); |
|
153 do_check_eq(update.type, "major"); |
|
154 do_check_eq(update.name, "New"); |
|
155 do_check_eq(update.displayVersion, "version 4.0"); |
|
156 do_check_eq(update.appVersion, "4.0"); |
|
157 do_check_eq(update.platformVersion, "4.0"); |
|
158 do_check_eq(update.detailsURL, "http://details/"); |
|
159 do_check_eq(update.billboardURL, "http://billboard/"); |
|
160 do_check_eq(update.licenseURL, "http://license/"); |
|
161 do_check_eq(update.serviceURL, "http://service/"); |
|
162 do_check_eq(update.installDate, "1238441400314"); |
|
163 do_check_eq(update.statusText, getString("installSuccess")); |
|
164 do_check_eq(update.buildID, "20080811053724"); |
|
165 do_check_true(update.isCompleteUpdate); |
|
166 do_check_eq(update.channel, "test_channel"); |
|
167 do_check_true(update.showPrompt); |
|
168 do_check_true(update.showNeverForVersion); |
|
169 do_check_eq(update.promptWaitTime, "100"); |
|
170 do_check_eq(update.previousAppVersion, "3.0"); |
|
171 |
|
172 patch = update.selectedPatch; |
|
173 do_check_eq(patch.type, "complete"); |
|
174 do_check_eq(patch.URL, URL_HOST + "/" + FILE_SIMPLE_MAR); |
|
175 do_check_eq(patch.hashFunction, "MD5"); |
|
176 do_check_eq(patch.hashValue, MD5_HASH_SIMPLE_MAR); |
|
177 do_check_eq(patch.size, SIZE_SIMPLE_MAR); |
|
178 do_check_true(patch.selected); |
|
179 do_check_eq(patch.state, STATE_SUCCEEDED); |
|
180 |
|
181 update = gUpdateManager.getUpdateAt(1); |
|
182 do_check_eq(update.state, STATE_FAILED); |
|
183 do_check_eq(update.name, "Existing"); |
|
184 do_check_eq(update.type, "major"); |
|
185 do_check_eq(update.displayVersion, "version 3.0"); |
|
186 do_check_eq(update.appVersion, "3.0"); |
|
187 do_check_eq(update.platformVersion, "3.0"); |
|
188 do_check_eq(update.detailsURL, "http://details/"); |
|
189 do_check_eq(update.billboardURL, null); |
|
190 do_check_eq(update.licenseURL, null); |
|
191 do_check_eq(update.serviceURL, "http://service/"); |
|
192 do_check_eq(update.installDate, "1238441400314"); |
|
193 do_check_eq(update.statusText, getString("patchApplyFailure")); |
|
194 do_check_eq(update.buildID, "20080811053724"); |
|
195 do_check_true(update.isCompleteUpdate); |
|
196 do_check_eq(update.channel, "test_channel"); |
|
197 do_check_false(update.showPrompt); |
|
198 do_check_false(update.showNeverForVersion); |
|
199 do_check_eq(update.promptWaitTime, "200"); |
|
200 do_check_eq(update.previousAppVersion, null); |
|
201 |
|
202 patch = update.selectedPatch; |
|
203 do_check_eq(patch.type, "complete"); |
|
204 do_check_eq(patch.URL, URL_HOST + "/" + FILE_SIMPLE_MAR); |
|
205 do_check_eq(patch.hashFunction, "MD5"); |
|
206 do_check_eq(patch.hashValue, MD5_HASH_SIMPLE_MAR); |
|
207 do_check_eq(patch.size, SIZE_SIMPLE_MAR); |
|
208 do_check_true(patch.selected); |
|
209 do_check_eq(patch.state, STATE_FAILED); |
|
210 |
|
211 doTestFinish(); |
|
212 } |