diff options
Diffstat (limited to 'toolkit/mozapps/extensions/test/xpcshell/test_ext_management.js')
-rw-r--r-- | toolkit/mozapps/extensions/test/xpcshell/test_ext_management.js | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_ext_management.js b/toolkit/mozapps/extensions/test/xpcshell/test_ext_management.js new file mode 100644 index 000000000..a3b3f477c --- /dev/null +++ b/toolkit/mozapps/extensions/test/xpcshell/test_ext_management.js @@ -0,0 +1,137 @@ +"use strict"; + +add_task(function* setup() { + createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "48", "48"); + startupManager(); +}); + +/* eslint-disable no-undef */ +// Shared background function for getSelf tests +function backgroundGetSelf() { + browser.management.getSelf().then(extInfo => { + browser.test.sendMessage("management-getSelf", extInfo); + }, error => { + browser.test.notifyFail(`getSelf rejected with error: ${error}`); + }); +} +/* eslint-enable no-undef */ + +add_task(function* test_management_get_self_complete() { + const id = "get_self_test_complete@tests.mozilla.com"; + const permissions = ["management", "cookies"]; + const hostPermissions = ["*://example.org/", "https://foo.example.org/"]; + + let manifest = { + applications: { + gecko: { + id, + update_url: "https://updates.mozilla.com/", + }, + }, + name: "test extension name", + short_name: "test extension short name", + description: "test extension description", + version: "1.0", + homepage_url: "http://www.example.com/", + options_ui: { + "page": "get_self_options.html", + }, + icons: { + "16": "icons/icon-16.png", + "48": "icons/icon-48.png", + }, + permissions: [...permissions, ...hostPermissions], + }; + + let extension = ExtensionTestUtils.loadExtension({ + manifest, + background: backgroundGetSelf, + useAddonManager: "temporary", + }); + yield extension.startup(); + let extInfo = yield extension.awaitMessage("management-getSelf"); + + equal(extInfo.id, id, "getSelf returned the expected id"); + equal(extInfo.installType, "development", "getSelf returned the expected installType"); + for (let prop of ["name", "description", "version"]) { + equal(extInfo[prop], manifest[prop], `getSelf returned the expected ${prop}`); + } + equal(extInfo.shortName, manifest.short_name, "getSelf returned the expected shortName"); + equal(extInfo.mayDisable, true, "getSelf returned the expected value for mayDisable"); + equal(extInfo.enabled, true, "getSelf returned the expected value for enabled"); + equal(extInfo.homepageUrl, manifest.homepage_url, "getSelf returned the expected homepageUrl"); + equal(extInfo.updateUrl, manifest.applications.gecko.update_url, "getSelf returned the expected updateUrl"); + ok(extInfo.optionsUrl.endsWith(manifest.options_ui.page), "getSelf returned the expected optionsUrl"); + for (let [index, size] of Object.keys(manifest.icons).sort().entries()) { + equal(extInfo.icons[index].size, +size, "getSelf returned the expected icon size"); + equal(extInfo.icons[index].url, manifest.icons[size], "getSelf returned the expected icon url"); + } + deepEqual(extInfo.permissions.sort(), permissions.sort(), "getSelf returned the expected permissions"); + deepEqual(extInfo.hostPermissions.sort(), hostPermissions.sort(), "getSelf returned the expected hostPermissions"); + equal(extInfo.installType, "development", "getSelf returned the expected installType"); + yield extension.unload(); +}); + +add_task(function* test_management_get_self_minimal() { + const id = "get_self_test_minimal@tests.mozilla.com"; + + let manifest = { + applications: { + gecko: { + id, + }, + }, + name: "test extension name", + version: "1.0", + }; + + let extension = ExtensionTestUtils.loadExtension({ + manifest, + background: backgroundGetSelf, + useAddonManager: "temporary", + }); + yield extension.startup(); + let extInfo = yield extension.awaitMessage("management-getSelf"); + + equal(extInfo.id, id, "getSelf returned the expected id"); + equal(extInfo.installType, "development", "getSelf returned the expected installType"); + for (let prop of ["name", "version"]) { + equal(extInfo[prop], manifest[prop], `getSelf returned the expected ${prop}`); + } + for (let prop of ["shortName", "description", "optionsUrl"]) { + equal(extInfo[prop], "", `getSelf returned the expected ${prop}`); + } + for (let prop of ["homepageUrl", " updateUrl", "icons"]) { + equal(Reflect.getOwnPropertyDescriptor(extInfo, prop), undefined, `getSelf did not return a ${prop} property`); + } + for (let prop of ["permissions", "hostPermissions"]) { + deepEqual(extInfo[prop], [], `getSelf returned the expected ${prop}`); + } + yield extension.unload(); +}); + +add_task(function* test_management_get_self_permanent() { + const id = "get_self_test_permanent@tests.mozilla.com"; + + let manifest = { + applications: { + gecko: { + id, + }, + }, + name: "test extension name", + version: "1.0", + }; + + let extension = ExtensionTestUtils.loadExtension({ + manifest, + background: backgroundGetSelf, + useAddonManager: "permanent", + }); + yield extension.startup(); + let extInfo = yield extension.awaitMessage("management-getSelf"); + + equal(extInfo.id, id, "getSelf returned the expected id"); + equal(extInfo.installType, "normal", "getSelf returned the expected installType"); + yield extension.unload(); +}); |