1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/mozapps/update/tests/unit_aus_update/updateManagerXML.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,212 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. 1.7 + */ 1.8 + 1.9 +function run_test() { 1.10 + setupTestCommon(); 1.11 + 1.12 + logTestInfo("testing addition of a successful update to " + FILE_UPDATES_DB + 1.13 + " and verification of update properties including the format " + 1.14 + "prior to bug 530872"); 1.15 + 1.16 + setUpdateChannel("test_channel"); 1.17 + 1.18 + var patch, patches, update, updates; 1.19 + // XXXrstrong - not specifying a detailsURL will cause a leak due to bug 470244 1.20 + // and until bug 470244 is fixed this will not test the value for detailsURL 1.21 + // when it isn't specified in the update xml. 1.22 + patches = getLocalPatchString("partial", "http://partial/", "SHA256", "cd43", 1.23 + "86", "true", STATE_PENDING); 1.24 + updates = getLocalUpdateString(patches, "major", "New", "version 4", "4.0", 1.25 + "4.0", "20070811053724", "http://details1/", 1.26 + "http://billboard1/", "http://license1/", 1.27 + "http://service1/", "1238441300314", 1.28 + "test status text", "false", "test_channel", 1.29 + "true", "true", "true", "345600", "true", 1.30 + "test version", "3.0", "3.0", 1.31 + "custom1_attr=\"custom1 value\"", 1.32 + "custom2_attr=\"custom2 value\""); 1.33 + 1.34 + writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true); 1.35 + writeStatusFile(STATE_SUCCEEDED); 1.36 + 1.37 + patches = getLocalPatchString("complete", "http://complete/", "SHA1", "6232", 1.38 + "75", "true", STATE_FAILED); 1.39 + updates = getLocalUpdateString(patches, "major", "Existing", null, null, 1.40 + "3.0", null, "http://details2/", null, null, 1.41 + "http://service2/", null, 1.42 + getString("patchApplyFailure"), "true", 1.43 + "test_channel", "false", null, null, "691200", 1.44 + null, "version 3", "3.0", null, 1.45 + "custom3_attr=\"custom3 value\"", 1.46 + "custom4_attr=\"custom4 value\""); 1.47 + writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), false); 1.48 + 1.49 + standardInit(); 1.50 + 1.51 + do_check_eq(gUpdateManager.activeUpdate, null); 1.52 + do_check_eq(gUpdateManager.updateCount, 2); 1.53 + 1.54 + update = gUpdateManager.getUpdateAt(0).QueryInterface(AUS_Ci.nsIPropertyBag); 1.55 + do_check_eq(update.state, STATE_SUCCEEDED); 1.56 + do_check_eq(update.type, "major"); 1.57 + do_check_eq(update.name, "New"); 1.58 + do_check_eq(update.displayVersion, "version 4"); 1.59 + do_check_eq(update.appVersion, "4.0"); 1.60 + do_check_eq(update.platformVersion, "4.0"); 1.61 + do_check_eq(update.buildID, "20070811053724"); 1.62 + do_check_eq(update.detailsURL, "http://details1/"); 1.63 + do_check_eq(update.billboardURL, "http://billboard1/"); 1.64 + do_check_eq(update.licenseURL, "http://license1/"); 1.65 + do_check_eq(update.serviceURL, "http://service1/"); 1.66 + do_check_eq(update.installDate, "1238441300314"); 1.67 + // statusText is updated 1.68 + do_check_eq(update.statusText, getString("installSuccess")); 1.69 + do_check_false(update.isCompleteUpdate); 1.70 + do_check_eq(update.channel, "test_channel"); 1.71 + do_check_true(update.showPrompt); 1.72 + do_check_true(update.showNeverForVersion); 1.73 + do_check_eq(update.promptWaitTime, "345600"); 1.74 + do_check_eq(update.previousAppVersion, "3.0"); 1.75 + // Custom attributes 1.76 + do_check_eq(update.getProperty("custom1_attr"), "custom1 value"); 1.77 + do_check_eq(update.getProperty("custom2_attr"), "custom2 value"); 1.78 + 1.79 + patch = update.selectedPatch; 1.80 + do_check_eq(patch.type, "partial"); 1.81 + do_check_eq(patch.URL, "http://partial/"); 1.82 + do_check_eq(patch.hashFunction, "SHA256"); 1.83 + do_check_eq(patch.hashValue, "cd43"); 1.84 + do_check_eq(patch.size, "86"); 1.85 + do_check_true(patch.selected); 1.86 + do_check_eq(patch.state, STATE_SUCCEEDED); 1.87 + 1.88 + update = gUpdateManager.getUpdateAt(1).QueryInterface(AUS_Ci.nsIPropertyBag); 1.89 + do_check_eq(update.state, STATE_FAILED); 1.90 + do_check_eq(update.name, "Existing"); 1.91 + do_check_eq(update.type, "major"); 1.92 + do_check_eq(update.displayVersion, "version 3"); 1.93 + do_check_eq(update.appVersion, "3.0"); 1.94 + do_check_eq(update.platformVersion, "3.0"); 1.95 + do_check_eq(update.detailsURL, "http://details2/"); 1.96 + do_check_eq(update.billboardURL, "http://details2/"); 1.97 + do_check_eq(update.licenseURL, null); 1.98 + do_check_eq(update.serviceURL, "http://service2/"); 1.99 + do_check_eq(update.installDate, "1238441400314"); 1.100 + do_check_eq(update.statusText, getString("patchApplyFailure")); 1.101 + do_check_eq(update.buildID, "20080811053724"); 1.102 + do_check_true(update.isCompleteUpdate); 1.103 + do_check_eq(update.channel, "test_channel"); 1.104 + do_check_true(update.showPrompt); 1.105 + do_check_true(update.showNeverForVersion); 1.106 + do_check_eq(update.promptWaitTime, "691200"); 1.107 + do_check_eq(update.previousAppVersion, null); 1.108 + // Custom attributes 1.109 + do_check_eq(update.getProperty("custom3_attr"), "custom3 value"); 1.110 + do_check_eq(update.getProperty("custom4_attr"), "custom4 value"); 1.111 + 1.112 + patch = update.selectedPatch; 1.113 + do_check_eq(patch.type, "complete"); 1.114 + do_check_eq(patch.URL, "http://complete/"); 1.115 + do_check_eq(patch.hashFunction, "SHA1"); 1.116 + do_check_eq(patch.hashValue, "6232"); 1.117 + do_check_eq(patch.size, "75"); 1.118 + do_check_true(patch.selected); 1.119 + do_check_eq(patch.state, STATE_FAILED); 1.120 + 1.121 + removeUpdateDirsAndFiles(); 1.122 + 1.123 + // XXXrstrong - not specifying a detailsURL will cause a leak due to bug 470244 1.124 + // and until this is fixed this will not test the value for detailsURL when it 1.125 + // isn't specified in the update xml. 1.126 + patches = getLocalPatchString(null, null, null, null, null, null, 1.127 + STATE_PENDING); 1.128 + updates = getLocalUpdateString(patches, "major", "New", null, null, "4.0", 1.129 + null, "http://details/", "http://billboard/", 1.130 + "http://license/", "http://service/", 1.131 + "1238441400314", "test status text", null, 1.132 + "test_channel", "true", "true", "true", "100", 1.133 + "true", "version 4.0", "4.0", "3.0"); 1.134 + 1.135 + writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true); 1.136 + writeStatusFile(STATE_SUCCEEDED); 1.137 + 1.138 + patches = getLocalPatchString(null, null, null, null, null, null, 1.139 + STATE_FAILED); 1.140 + updates = getLocalUpdateString(patches, "major", "Existing", "version 3.0", 1.141 + "3.0", "3.0", null, "http://details/", null, 1.142 + null, "http://service/", null, 1.143 + getString("patchApplyFailure"), null, 1.144 + "test_channel", "false", null, null, "200", 1.145 + null, "version 3", null, null); 1.146 + writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), false); 1.147 + 1.148 + reloadUpdateManagerData(); 1.149 + initUpdateServiceStub(); 1.150 + 1.151 + do_check_eq(gUpdateManager.activeUpdate, null); 1.152 + do_check_eq(gUpdateManager.updateCount, 2); 1.153 + 1.154 + update = gUpdateManager.getUpdateAt(0); 1.155 + do_check_eq(update.state, STATE_SUCCEEDED); 1.156 + do_check_eq(update.type, "major"); 1.157 + do_check_eq(update.name, "New"); 1.158 + do_check_eq(update.displayVersion, "version 4.0"); 1.159 + do_check_eq(update.appVersion, "4.0"); 1.160 + do_check_eq(update.platformVersion, "4.0"); 1.161 + do_check_eq(update.detailsURL, "http://details/"); 1.162 + do_check_eq(update.billboardURL, "http://billboard/"); 1.163 + do_check_eq(update.licenseURL, "http://license/"); 1.164 + do_check_eq(update.serviceURL, "http://service/"); 1.165 + do_check_eq(update.installDate, "1238441400314"); 1.166 + do_check_eq(update.statusText, getString("installSuccess")); 1.167 + do_check_eq(update.buildID, "20080811053724"); 1.168 + do_check_true(update.isCompleteUpdate); 1.169 + do_check_eq(update.channel, "test_channel"); 1.170 + do_check_true(update.showPrompt); 1.171 + do_check_true(update.showNeverForVersion); 1.172 + do_check_eq(update.promptWaitTime, "100"); 1.173 + do_check_eq(update.previousAppVersion, "3.0"); 1.174 + 1.175 + patch = update.selectedPatch; 1.176 + do_check_eq(patch.type, "complete"); 1.177 + do_check_eq(patch.URL, URL_HOST + "/" + FILE_SIMPLE_MAR); 1.178 + do_check_eq(patch.hashFunction, "MD5"); 1.179 + do_check_eq(patch.hashValue, MD5_HASH_SIMPLE_MAR); 1.180 + do_check_eq(patch.size, SIZE_SIMPLE_MAR); 1.181 + do_check_true(patch.selected); 1.182 + do_check_eq(patch.state, STATE_SUCCEEDED); 1.183 + 1.184 + update = gUpdateManager.getUpdateAt(1); 1.185 + do_check_eq(update.state, STATE_FAILED); 1.186 + do_check_eq(update.name, "Existing"); 1.187 + do_check_eq(update.type, "major"); 1.188 + do_check_eq(update.displayVersion, "version 3.0"); 1.189 + do_check_eq(update.appVersion, "3.0"); 1.190 + do_check_eq(update.platformVersion, "3.0"); 1.191 + do_check_eq(update.detailsURL, "http://details/"); 1.192 + do_check_eq(update.billboardURL, null); 1.193 + do_check_eq(update.licenseURL, null); 1.194 + do_check_eq(update.serviceURL, "http://service/"); 1.195 + do_check_eq(update.installDate, "1238441400314"); 1.196 + do_check_eq(update.statusText, getString("patchApplyFailure")); 1.197 + do_check_eq(update.buildID, "20080811053724"); 1.198 + do_check_true(update.isCompleteUpdate); 1.199 + do_check_eq(update.channel, "test_channel"); 1.200 + do_check_false(update.showPrompt); 1.201 + do_check_false(update.showNeverForVersion); 1.202 + do_check_eq(update.promptWaitTime, "200"); 1.203 + do_check_eq(update.previousAppVersion, null); 1.204 + 1.205 + patch = update.selectedPatch; 1.206 + do_check_eq(patch.type, "complete"); 1.207 + do_check_eq(patch.URL, URL_HOST + "/" + FILE_SIMPLE_MAR); 1.208 + do_check_eq(patch.hashFunction, "MD5"); 1.209 + do_check_eq(patch.hashValue, MD5_HASH_SIMPLE_MAR); 1.210 + do_check_eq(patch.size, SIZE_SIMPLE_MAR); 1.211 + do_check_true(patch.selected); 1.212 + do_check_eq(patch.state, STATE_FAILED); 1.213 + 1.214 + doTestFinish(); 1.215 +}