Files
UXP-Fixed/devtools/server/tests/unit/test_addons_actor.js
T
2018-02-02 04:16:08 -05:00

52 lines
1.7 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
const protocol = require("devtools/shared/protocol");
const {AddonsActor} = require("devtools/server/actors/addons");
const {AddonsFront} = require("devtools/shared/fronts/addons");
startupAddonsManager();
function* connect() {
const client = yield new Promise(resolve => {
get_chrome_actors(client => resolve(client));
});
const root = yield listTabs(client);
const addonsActor = root.addonsActor;
ok(addonsActor, "Got AddonsActor instance");
const addons = AddonsFront(client, {addonsActor});
return [client, addons];
}
add_task(function* testSuccessfulInstall() {
const [client, addons] = yield connect();
const allowMissing = false;
const usePlatformSeparator = true;
const addonPath = getFilePath("addons/web-extension",
allowMissing, usePlatformSeparator);
const installedAddon = yield addons.installTemporaryAddon(addonPath);
equal(installedAddon.id, "test-addons-actor@mozilla.org");
// The returned object is currently not a proper actor.
equal(installedAddon.actor, false);
const addonList = yield client.listAddons();
ok(addonList && addonList.addons && addonList.addons.map(a => a.name),
"Received list of add-ons");
const addon = addonList.addons.filter(a => a.id === installedAddon.id)[0];
ok(addon, "Test add-on appeared in root install list");
yield close(client);
});
add_task(function* testNonExistantPath() {
const [client, addons] = yield connect();
yield Assert.rejects(
addons.installTemporaryAddon("some-non-existant-path"),
/Could not install add-on.*Component returned failure/);
yield close(client);
});