tor-browser

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

browser_downgrade_view_source.js (3035B)


      1 // This test ensures that view-source:https falls back to view-source:http
      2 "use strict";
      3 
      4 const TEST_PATH_HTTP = getRootDirectory(gTestPath).replace(
      5  "chrome://mochitests/content",
      6  "http://example.com"
      7 );
      8 
      9 const TEST_PATH_HTTPS = getRootDirectory(gTestPath).replace(
     10  "chrome://mochitests/content",
     11  "https://example.com"
     12 );
     13 
     14 async function runTest(desc, url, expectedURI, excpectedContent) {
     15  await BrowserTestUtils.withNewTab("about:blank", async function (browser) {
     16    let loaded = BrowserTestUtils.browserLoaded(browser, false, null, true);
     17    BrowserTestUtils.startLoadingURIString(browser, url);
     18    await loaded;
     19 
     20    await SpecialPowers.spawn(
     21      browser,
     22      [desc, expectedURI, excpectedContent],
     23      async function (desc, expectedURI, excpectedContent) {
     24        let loadedURI = content.document.documentURI;
     25        is(loadedURI, expectedURI, desc);
     26        let loadedContent = content.document.body.textContent;
     27        is(loadedContent, excpectedContent, desc);
     28      }
     29    );
     30 
     31    await SpecialPowers.removePermission(
     32      "https-only-load-insecure",
     33      "http://example.com"
     34    );
     35  });
     36 }
     37 
     38 add_task(async function () {
     39  requestLongerTimeout(2);
     40 
     41  await SpecialPowers.pushPrefEnv({
     42    set: [["dom.security.https_first", true]],
     43  });
     44 
     45  await runTest(
     46    "URL with query 'downgrade' should be http:",
     47    `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?downgrade`,
     48    `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?downgrade`,
     49    "view-source:http://"
     50  );
     51 
     52  await runTest(
     53    "URL with query 'downgrade' should be http and leave query params untouched:",
     54    `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?downgrade&https://httpsfirst.com`,
     55    `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?downgrade&https://httpsfirst.com`,
     56    "view-source:http://"
     57  );
     58 
     59  await runTest(
     60    "URL with query 'upgrade' should be https:",
     61    `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?upgrade`,
     62    `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade`,
     63    "view-source:https://"
     64  );
     65 
     66  await runTest(
     67    "URL with query 'upgrade' should be https:",
     68    `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade`,
     69    `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade`,
     70    "view-source:https://"
     71  );
     72 
     73  await runTest(
     74    "URL with query 'upgrade' should be https and leave query params untouched:",
     75    `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?upgrade&https://httpsfirst.com`,
     76    `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade&https://httpsfirst.com`,
     77    "view-source:https://"
     78  );
     79 
     80  await runTest(
     81    "URL with query 'upgrade' should be https and leave query params untouched:",
     82    `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade&https://httpsfirst.com`,
     83    `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade&https://httpsfirst.com`,
     84    "view-source:https://"
     85  );
     86 });