diff options
Diffstat (limited to '')
-rw-r--r-- | toolkit/mozapps/extensions/test/xpcshell/test_updatecheck_errors.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_updatecheck_errors.js b/toolkit/mozapps/extensions/test/xpcshell/test_updatecheck_errors.js new file mode 100644 index 0000000000..5bbd723f42 --- /dev/null +++ b/toolkit/mozapps/extensions/test/xpcshell/test_updatecheck_errors.js @@ -0,0 +1,52 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +// This verifies that add-on update check failures are propagated correctly + +// The test extension uses an insecure update url. +Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false); + +var testserver; + +add_task(async function setup() { + createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); + + // Create and configure the HTTP server. + testserver = createHttpServer({ hosts: ["example.com"] }); + testserver.registerDirectory("/data/", do_get_file("data")); + + await promiseStartupManager(); +}); + +// Verify that an update check returns the correct errors. +add_task(async function () { + await promiseInstallWebExtension({ + manifest: { + name: "Test Addon 1", + version: "1.0", + browser_specific_settings: { + gecko: { + id: "addon1@tests.mozilla.org", + update_url: "http://example.com/data/test_missing.json", + }, + }, + }, + }); + + let addon = await promiseAddonByID("addon1@tests.mozilla.org"); + equal(addon.version, "1.0"); + + // We're expecting an error, so resolve when the promise is rejected. + let update = await promiseFindAddonUpdates( + addon, + AddonManager.UPDATE_WHEN_USER_REQUESTED + ).catch(e => e); + + ok(!update.compatibilityUpdate, "not expecting a compatibility update"); + ok(!update.updateAvailable, "not expecting a compatibility update"); + + equal(update.error, AddonManager.UPDATE_STATUS_DOWNLOAD_ERROR); + + await addon.uninstall(); +}); |