tor-browser

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

browser_test_onion_referrer.js (1349B)


      1 // eslint-disable-next-line @microsoft/sdl/no-insecure-url
      2 const ONION_BASE = "http://example.onion/";
      3 
      4 const ONION_PATH =
      5  getRootDirectory(gTestPath).replace(
      6    "chrome://mochitests/content/",
      7    ONION_BASE
      8  ) + "file_empty.html";
      9 
     10 const ECHOER_PATH =
     11  getRootDirectory(gTestPath).replace(
     12    "chrome://mochitests/content/",
     13    "https://example.com/"
     14  ) + "file_referrer_echoer.sjs";
     15 
     16 function getReferrer(browser) {
     17  return SpecialPowers.spawn(browser, [ECHOER_PATH], async url =>
     18    content.fetch(url).then(response => response.text())
     19  );
     20 }
     21 
     22 async function runTest(hideOnionSource) {
     23  const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, ONION_PATH);
     24 
     25  await SpecialPowers.pushPrefEnv({
     26    set: [["network.http.referer.hideOnionSource", hideOnionSource]],
     27  });
     28 
     29  const referer = await getReferrer(tab.linkedBrowser);
     30  const expectedReferrer = hideOnionSource ? "" : ONION_BASE;
     31  const expectedReferrerMessage = hideOnionSource ? "hidden" : "visible";
     32  is(
     33    referer,
     34    expectedReferrer,
     35    `The referrer should be ${expectedReferrerMessage}. Got: ${referer}`
     36  );
     37 
     38  await SpecialPowers.popPrefEnv();
     39  BrowserTestUtils.removeTab(tab);
     40 }
     41 
     42 add_task(async function test_onion_referrer_visible() {
     43  await runTest(false);
     44 });
     45 
     46 add_task(async function test_onion_referrer_hidden() {
     47  await runTest(true);
     48 });