tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_AboutWelcomeAttribution.js (2330B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/
      3 */
      4 
      5 "use strict";
      6 
      7 const { AboutWelcomeDefaults } = ChromeUtils.importESModule(
      8  "resource:///modules/aboutwelcome/AboutWelcomeDefaults.sys.mjs"
      9 );
     10 const { sinon } = ChromeUtils.importESModule(
     11  "resource://testing-common/Sinon.sys.mjs"
     12 );
     13 const { AttributionCode } = ChromeUtils.importESModule(
     14  "moz-src:///browser/components/attribution/AttributionCode.sys.mjs"
     15 );
     16 const { AddonRepository } = ChromeUtils.importESModule(
     17  "resource://gre/modules/addons/AddonRepository.sys.mjs"
     18 );
     19 
     20 const TEST_ATTRIBUTION_DATA = {
     21  source: "addons.mozilla.org",
     22  medium: "referral",
     23  campaign: "non-fx-button",
     24  content: "rta:iridium%40particlecore.github.io",
     25 };
     26 
     27 add_task(async function test_handleAddonInfoNotFound() {
     28  let sandbox = sinon.createSandbox();
     29  const stub = sandbox.stub(AttributionCode, "getAttrDataAsync").resolves(null);
     30  let result = await AboutWelcomeDefaults.getAttributionContent();
     31  equal(stub.callCount, 1, "Call was made");
     32  equal(result, null, "No data is returned");
     33 
     34  sandbox.restore();
     35 });
     36 
     37 add_task(async function test_UAAttribution() {
     38  let sandbox = sinon.createSandbox();
     39  const stub = sandbox
     40    .stub(AttributionCode, "getAttrDataAsync")
     41    .resolves({ ua: "test" });
     42  let result = await AboutWelcomeDefaults.getAttributionContent();
     43  equal(stub.callCount, 1, "Call was made");
     44  equal(result.template, undefined, "Template was not returned");
     45  equal(result.ua, "test", "UA was returned");
     46 
     47  sandbox.restore();
     48 });
     49 
     50 add_task(async function test_formatAttributionData() {
     51  let sandbox = sinon.createSandbox();
     52  const TEST_ADDON_INFO = {
     53    sourceURI: { scheme: "https", spec: "https://test.xpi" },
     54    name: "Test Add-on",
     55    icons: { 64: "http://test.svg" },
     56  };
     57  sandbox
     58    .stub(AttributionCode, "getAttrDataAsync")
     59    .resolves(TEST_ATTRIBUTION_DATA);
     60  sandbox.stub(AddonRepository, "getAddonsByIDs").resolves([TEST_ADDON_INFO]);
     61  let result = await AboutWelcomeDefaults.getAttributionContent(
     62    TEST_ATTRIBUTION_DATA
     63  );
     64  equal(AddonRepository.getAddonsByIDs.callCount, 1, "Retrieve addon content");
     65  equal(result.template, "return_to_amo", "RTAMO template returned");
     66  equal(result.name, TEST_ADDON_INFO.name, "AddonInfo returned");
     67 
     68  sandbox.restore();
     69 });