tor-browser

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

browser_ipprotection_proxy_errors.js (1611B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 const { IPPChannelFilter } = ChromeUtils.importESModule(
      8  "moz-src:///browser/components/ipprotection/IPPChannelFilter.sys.mjs"
      9 );
     10 const { IPPNetworkErrorObserver } = ChromeUtils.importESModule(
     11  "moz-src:///browser/components/ipprotection/IPPNetworkErrorObserver.sys.mjs"
     12 );
     13 
     14 add_task(async function test_createConnection_and_proxy() {
     15  const failConnect = async (request, response) => {
     16    response.setStatusLine(request.httpVersion, 500, "Error");
     17    response.setHeader("Content-Type", "text/plain");
     18    response.write("Error");
     19  };
     20 
     21  await withProxyServer(async proxyInfo => {
     22    // Create the IPP connection filter
     23    const filter = IPPChannelFilter.create();
     24    filter.initialize("", proxyInfo.server);
     25    filter.start();
     26 
     27    const observer = new IPPNetworkErrorObserver();
     28    const eventFired = new Promise(r => {
     29      observer.addEventListener("proxy-http-error", e => {
     30        r(e);
     31      });
     32    });
     33    observer.addIsolationKey(filter.isolationKey);
     34    observer.start();
     35 
     36    let tab = await BrowserTestUtils.openNewForegroundTab(
     37      gBrowser,
     38      `https://example.com/`,
     39      false // waitForLoad
     40    );
     41    const { detail } = await eventFired;
     42    await BrowserTestUtils.removeTab(tab);
     43 
     44    Assert.equal(detail.httpStatus, 500);
     45    Assert.equal(detail.isolationKey, filter.isolationKey);
     46    Assert.equal(detail.level, "error");
     47  }, failConnect);
     48 });