1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
"use strict";
ChromeUtils.import("resource://testing-common/AddonTestUtils.jsm", this);
ChromeUtils.import("resource://gre/modules/Services.jsm", this);
ChromeUtils.import("resource://normandy/lib/Addons.jsm", this);
// Initialize test utils
AddonTestUtils.initMochitest(this);
const testInstallId = "testInstallUpdate@example.com";
decorate_task(
withInstalledWebExtension({ version: "1.0", id: testInstallId }),
withWebExtension({ version: "2.0", id: testInstallId }),
async function testInstallUpdate([id1, addonFile1], [id2, addonFile2]) {
// Fail to install the 2.0 add-on without updating enabled
const newAddonUrl = Services.io.newFileURI(addonFile2).spec;
await Assert.rejects(
Addons.install(newAddonUrl, { update: false }),
/updating is disabled/,
"install rejects when the study add-on is already installed and updating is disabled"
);
// Install the new add-on with updating enabled
const startupPromise = AddonTestUtils.promiseWebExtensionStartup(
testInstallId
);
await Addons.install(newAddonUrl, { update: true });
const addon = await startupPromise;
is(
addon.version,
"2.0",
"install can successfully update an already-installed addon when updating is enabled."
);
}
);
|