summaryrefslogtreecommitdiffstats
path: root/toolkit/components/normandy/test/browser/browser_Addons.js
blob: 7d2f6532679ed609c0cc0485934ab2c492386f70 (plain)
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."
    );
  }
);