tor-browser

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

browser_aboutCertError_coop.js (3775B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const AUTH_ROUTE =
      7  "https://example.com/browser/browser/base/content/test/about/sandbox_corp_iframe.sjs";
      8 
      9 /**
     10 * Waits for a single TabOpen event, then attaches waitForErrorPage
     11 * to the newly opened tab’s browser. Returns the tab once the error page loads.
     12 */
     13 function waitForNewTabAndErrorPage() {
     14  let tabLoaded = BrowserTestUtils.waitForEvent(
     15    gBrowser.tabContainer,
     16    "TabOpen"
     17  );
     18 
     19  return (async () => {
     20    let event = await tabLoaded;
     21    let newTab = event.target;
     22    let newBrowser = newTab.linkedBrowser;
     23 
     24    let errorPageLoaded = BrowserTestUtils.waitForErrorPage(newBrowser);
     25    await errorPageLoaded;
     26 
     27    return newTab;
     28  })();
     29 }
     30 
     31 add_task(async function test_coopError() {
     32  await setSecurityCertErrorsFeltPrivacyToFalse();
     33  let iframeTab = await BrowserTestUtils.openNewForegroundTab(
     34    gBrowser,
     35    `${AUTH_ROUTE}?error=coop`
     36  );
     37  let popupTabLoaded = waitForNewTabAndErrorPage();
     38 
     39  await SpecialPowers.spawn(iframeTab.linkedBrowser, [], async () => {
     40    let button = content.document
     41      .querySelector("iframe")
     42      .contentDocument.querySelector("#openPopupButton");
     43    if (!button) {
     44      ok(false, "Popup button not found!");
     45    }
     46    button.click();
     47  });
     48 
     49  let popUpTab = await popupTabLoaded;
     50  let popUpBrowser = popUpTab.linkedBrowser;
     51 
     52  await SpecialPowers.spawn(popUpBrowser, [], function () {
     53    const doc = content.document;
     54    const titleEl = doc.querySelector(".title-text");
     55    const actualDataL10nID = titleEl.getAttribute("data-l10n-id");
     56    is(
     57      actualDataL10nID,
     58      "general-body-title",
     59      "Correct error link title (CORP) is set"
     60    );
     61 
     62    const anchor = doc.querySelector("a");
     63    const actualAnchorl10nID = anchor.getAttribute("data-l10n-id");
     64    is(
     65      actualAnchorl10nID,
     66      "certerror-coop-learn-more",
     67      "Correct error link is set"
     68    );
     69  });
     70 
     71  BrowserTestUtils.removeTab(iframeTab);
     72  BrowserTestUtils.removeTab(popUpTab);
     73 });
     74 
     75 add_task(async function test_coopError_feltPrivacyToTrue() {
     76  await setSecurityCertErrorsFeltPrivacyToTrue();
     77  let iframeTab = await BrowserTestUtils.openNewForegroundTab(
     78    gBrowser,
     79    `${AUTH_ROUTE}?error=coop`
     80  );
     81  let popupTabLoaded = waitForNewTabAndErrorPage();
     82 
     83  await SpecialPowers.spawn(iframeTab.linkedBrowser, [], async () => {
     84    let button = content.document
     85      .querySelector("iframe")
     86      .contentDocument.querySelector("#openPopupButton");
     87    if (!button) {
     88      Assert.ok(false, "Popup button not found!");
     89    }
     90    EventUtils.synthesizeMouseAtCenter(button, {}, content);
     91  });
     92 
     93  let popUpTab = await popupTabLoaded;
     94  let popUpBrowser = popUpTab.linkedBrowser;
     95 
     96  await SpecialPowers.spawn(popUpBrowser, [], async function () {
     97    const doc = content.document;
     98 
     99    const netErrorCard = doc.querySelector("net-error-card").wrappedJSObject;
    100    await netErrorCard.getUpdateComplete();
    101 
    102    Assert.strictEqual(
    103      netErrorCard.netErrorTitleText.dataset.l10nId,
    104      "fp-certerror-body-title",
    105      "Correct error link title (CORP) is set"
    106    );
    107 
    108    await ContentTaskUtils.waitForCondition(() => {
    109      return (
    110        netErrorCard.netErrorLearnMoreLink &&
    111        netErrorCard.netErrorLearnMoreLink.textContent != "" &&
    112        netErrorCard.netErrorLearnMoreLink.tagName.toLowerCase() === "a"
    113      );
    114    }, "learn more link is visible and is a link");
    115 
    116    Assert.strictEqual(
    117      netErrorCard.netErrorLearnMoreLink.dataset.l10nId,
    118      "certerror-coop-learn-more",
    119      "Learn more element is a link and has COOP text"
    120    );
    121  });
    122  BrowserTestUtils.removeTab(iframeTab);
    123  BrowserTestUtils.removeTab(popUpTab);
    124  await SpecialPowers.popPrefEnv();
    125 });