diff options
Diffstat (limited to 'toolkit/components/search/tests/xpcshell/test_webextensions_upgrade.js')
-rw-r--r-- | toolkit/components/search/tests/xpcshell/test_webextensions_upgrade.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/toolkit/components/search/tests/xpcshell/test_webextensions_upgrade.js b/toolkit/components/search/tests/xpcshell/test_webextensions_upgrade.js new file mode 100644 index 0000000000..b6fe0ae5ea --- /dev/null +++ b/toolkit/components/search/tests/xpcshell/test_webextensions_upgrade.js @@ -0,0 +1,73 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const { + createAppInfo, + promiseShutdownManager, + promiseStartupManager, +} = AddonTestUtils; + +SearchTestUtils.initXPCShellAddonManager(this); + +function extInfo(id, name, version, keyword) { + return { + useAddonManager: "permanent", + manifest: { + version, + applications: { + gecko: { id: `${id}@tests.mozilla.org` }, + }, + chrome_settings_overrides: { + search_provider: { + name, + keyword, + search_url: `https://example.com/?q={searchTerms}&version=${version}`, + }, + }, + }, + }; +} + +add_task(async function setup() { + await promiseStartupManager(); + registerCleanupFunction(promiseShutdownManager); +}); + +add_task(async function basic_install_test() { + await Services.search.init(); + await promiseAfterSettings(); + + let info = extInfo("example", "Example", "1.0", "foo"); + let extension = ExtensionTestUtils.loadExtension(info); + await extension.startup(); + await AddonTestUtils.waitForSearchProviderStartup(extension); + + let engine = await Services.search.getEngineByAlias("foo"); + Assert.ok(engine, "Can fetch engine with alias"); + engine.alias = "testing"; + + engine = await Services.search.getEngineByAlias("testing"); + Assert.ok(engine, "Can fetch engine by alias"); + let params = engine.getSubmission("test").uri.query.split("&"); + Assert.ok(params.includes("version=1.0"), "Correct version installed"); + + let promiseChanged = TestUtils.topicObserved( + "browser-search-engine-modified", + (eng, verb) => verb == "engine-changed" + ); + + await extension.upgrade(extInfo("example", "Example", "2.0", "bar")); + await AddonTestUtils.waitForSearchProviderStartup(extension); + await promiseChanged; + + engine = await Services.search.getEngineByAlias("testing"); + Assert.ok(engine, "Engine still has alias set"); + + params = engine.getSubmission("test").uri.query.split("&"); + Assert.ok(params.includes("version=2.0"), "Correct version installed"); + + await extension.unload(); + await promiseAfterSettings(); +}); |