Files
basilisk55/toolkit/mozapps/extensions/test/xpcshell/test_ext_management.js
T

138 lines
4.8 KiB
JavaScript

"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();
});