mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-09 16:55:15 +00:00
237 lines
7.9 KiB
JavaScript
237 lines
7.9 KiB
JavaScript
|
/* Any copyright is dedicated to the Public Domain.
|
||
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
||
|
*/
|
||
|
|
||
|
// This verifies that AddonUpdateChecker works correctly
|
||
|
|
||
|
Components.utils.import("resource://gre/modules/addons/AddonUpdateChecker.jsm");
|
||
|
|
||
|
Components.utils.import("resource://testing-common/httpd.js");
|
||
|
|
||
|
var testserver = createHttpServer(4444);
|
||
|
testserver.registerDirectory("/data/", do_get_file("data"));
|
||
|
|
||
|
function checkUpdates(aId, aUpdateKey, aUpdateFile) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
AddonUpdateChecker.checkForUpdates(aId, aUpdateKey, `http://localhost:4444/data/${aUpdateFile}`, {
|
||
|
onUpdateCheckComplete: resolve,
|
||
|
|
||
|
onUpdateCheckError: function(status) {
|
||
|
let error = new Error("Update check failed with status " + status);
|
||
|
error.status = status;
|
||
|
reject(error);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function run_test() {
|
||
|
createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1");
|
||
|
|
||
|
run_next_test();
|
||
|
}
|
||
|
|
||
|
// Test that a basic update check returns the expected available updates
|
||
|
add_task(function* () {
|
||
|
for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) {
|
||
|
let updates = yield checkUpdates("updatecheck1@tests.mozilla.org", null, file);
|
||
|
|
||
|
equal(updates.length, 5);
|
||
|
let update = AddonUpdateChecker.getNewestCompatibleUpdate(updates);
|
||
|
notEqual(update, null);
|
||
|
equal(update.version, "3.0");
|
||
|
update = AddonUpdateChecker.getCompatibilityUpdate(updates, "2");
|
||
|
notEqual(update, null);
|
||
|
equal(update.version, "2.0");
|
||
|
equal(update.targetApplications[0].minVersion, "1");
|
||
|
equal(update.targetApplications[0].maxVersion, "2");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
/*
|
||
|
* Tests that the security checks are applied correctly
|
||
|
*
|
||
|
* Test signature updateHash updateLink expected
|
||
|
*--------------------------------------------------------
|
||
|
* 2 absent absent http fail
|
||
|
* 3 broken absent http fail
|
||
|
* 4 correct absent http no update
|
||
|
* 5 correct sha1 http update
|
||
|
* 6 corrent absent https update
|
||
|
* 7 corrent sha1 https update
|
||
|
* 8 corrent md2 http no update
|
||
|
* 9 corrent md2 https update
|
||
|
*/
|
||
|
|
||
|
var updateKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj" +
|
||
|
"Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD" +
|
||
|
"NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf" +
|
||
|
"awB/zH4KaPiY3vnrzQIDAQAB";
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) {
|
||
|
try {
|
||
|
yield checkUpdates("test_bug378216_5@tests.mozilla.org",
|
||
|
updateKey, file);
|
||
|
throw "Expected the update check to fail";
|
||
|
} catch (e) {}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) {
|
||
|
try {
|
||
|
yield checkUpdates("test_bug378216_7@tests.mozilla.org",
|
||
|
updateKey, file);
|
||
|
|
||
|
throw "Expected the update check to fail";
|
||
|
} catch (e) {}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
// Make sure that the JSON manifest is rejected when an update key is
|
||
|
// required, but perform the remaining tests which aren't expected to fail
|
||
|
// because of the update key, without requiring one for the JSON variant.
|
||
|
|
||
|
try {
|
||
|
let updates = yield checkUpdates("test_bug378216_8@tests.mozilla.org",
|
||
|
updateKey, "test_updatecheck.json");
|
||
|
|
||
|
throw "Expected the update check to fail";
|
||
|
} catch(e) {}
|
||
|
|
||
|
for (let [file, key] of [["test_updatecheck.rdf", updateKey],
|
||
|
["test_updatecheck.json", null]]) {
|
||
|
let updates = yield checkUpdates("test_bug378216_8@tests.mozilla.org",
|
||
|
key, file);
|
||
|
equal(updates.length, 1);
|
||
|
ok(!("updateURL" in updates[0]));
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let [file, key] of [["test_updatecheck.rdf", updateKey],
|
||
|
["test_updatecheck.json", null]]) {
|
||
|
let updates = yield checkUpdates("test_bug378216_9@tests.mozilla.org",
|
||
|
key, file);
|
||
|
equal(updates.length, 1);
|
||
|
equal(updates[0].version, "2.0");
|
||
|
ok("updateURL" in updates[0]);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let [file, key] of [["test_updatecheck.rdf", updateKey],
|
||
|
["test_updatecheck.json", null]]) {
|
||
|
let updates = yield checkUpdates("test_bug378216_10@tests.mozilla.org",
|
||
|
key, file);
|
||
|
equal(updates.length, 1);
|
||
|
equal(updates[0].version, "2.0");
|
||
|
ok("updateURL" in updates[0]);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let [file, key] of [["test_updatecheck.rdf", updateKey],
|
||
|
["test_updatecheck.json", null]]) {
|
||
|
let updates = yield checkUpdates("test_bug378216_11@tests.mozilla.org",
|
||
|
key, file);
|
||
|
equal(updates.length, 1);
|
||
|
equal(updates[0].version, "2.0");
|
||
|
ok("updateURL" in updates[0]);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let [file, key] of [["test_updatecheck.rdf", updateKey],
|
||
|
["test_updatecheck.json", null]]) {
|
||
|
let updates = yield checkUpdates("test_bug378216_12@tests.mozilla.org",
|
||
|
key, file);
|
||
|
equal(updates.length, 1);
|
||
|
do_check_false("updateURL" in updates[0]);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let [file, key] of [["test_updatecheck.rdf", updateKey],
|
||
|
["test_updatecheck.json", null]]) {
|
||
|
let updates = yield checkUpdates("test_bug378216_13@tests.mozilla.org",
|
||
|
key, file);
|
||
|
equal(updates.length, 1);
|
||
|
equal(updates[0].version, "2.0");
|
||
|
ok("updateURL" in updates[0]);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) {
|
||
|
let updates = yield checkUpdates("test_bug378216_14@tests.mozilla.org",
|
||
|
null, file);
|
||
|
equal(updates.length, 0);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) {
|
||
|
try {
|
||
|
yield checkUpdates("test_bug378216_15@tests.mozilla.org",
|
||
|
null, file);
|
||
|
|
||
|
throw "Update check should have failed";
|
||
|
} catch (e) {
|
||
|
equal(e.status, AddonUpdateChecker.ERROR_PARSE_ERROR);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) {
|
||
|
let updates = yield checkUpdates("ignore-compat@tests.mozilla.org",
|
||
|
null, file);
|
||
|
equal(updates.length, 3);
|
||
|
let update = AddonUpdateChecker.getNewestCompatibleUpdate(
|
||
|
updates, null, null, true);
|
||
|
notEqual(update, null);
|
||
|
equal(update.version, 2);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) {
|
||
|
let updates = yield checkUpdates("compat-override@tests.mozilla.org",
|
||
|
null, file);
|
||
|
equal(updates.length, 3);
|
||
|
let overrides = [{
|
||
|
type: "incompatible",
|
||
|
minVersion: 1,
|
||
|
maxVersion: 2,
|
||
|
appID: "xpcshell@tests.mozilla.org",
|
||
|
appMinVersion: 0.1,
|
||
|
appMaxVersion: 0.2
|
||
|
}, {
|
||
|
type: "incompatible",
|
||
|
minVersion: 2,
|
||
|
maxVersion: 2,
|
||
|
appID: "xpcshell@tests.mozilla.org",
|
||
|
appMinVersion: 1,
|
||
|
appMaxVersion: 2
|
||
|
}];
|
||
|
let update = AddonUpdateChecker.getNewestCompatibleUpdate(
|
||
|
updates, null, null, true, false, overrides);
|
||
|
notEqual(update, null);
|
||
|
equal(update.version, 1);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
add_task(function* () {
|
||
|
for (let file of ["test_updatecheck.rdf", "test_updatecheck.json"]) {
|
||
|
let updates = yield checkUpdates("compat-strict-optin@tests.mozilla.org",
|
||
|
null, file);
|
||
|
equal(updates.length, 1);
|
||
|
let update = AddonUpdateChecker.getNewestCompatibleUpdate(
|
||
|
updates, null, null, true, false);
|
||
|
equal(update, null);
|
||
|
}
|
||
|
});
|