tor-browser

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

test_te_remove.js (1930B)


      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 { NodeHTTP2Server } = ChromeUtils.importESModule(
      8  "resource://testing-common/NodeServer.sys.mjs"
      9 );
     10 
     11 add_task(async function test_overwrite_te() {
     12  let certdb = Cc["@mozilla.org/security/x509certdb;1"].getService(
     13    Ci.nsIX509CertDB
     14  );
     15  addCertFromFile(certdb, "http2-ca.pem", "CTu,u,u");
     16 
     17  let server = new NodeHTTP2Server();
     18  await server.start();
     19  registerCleanupFunction(async () => {
     20    await server.stop();
     21  });
     22  await server.registerPathHandler("/", (req, resp) => {
     23    // Set response headers
     24    resp.writeHead(200, { "Content-Type": "application/json" });
     25 
     26    // Dump headers
     27    resp.end(JSON.stringify(req.headers, null, 2));
     28  });
     29 
     30  let chan = NetUtil.newChannel({
     31    uri: `https://localhost:${server.port()}/`,
     32    loadUsingSystemPrincipal: true,
     33  }).QueryInterface(Ci.nsIHttpChannel);
     34  chan.loadFlags = Ci.nsIChannel.LOAD_INITIAL_DOCUMENT_URI;
     35 
     36  let { buffer } = await new Promise(resolve => {
     37    function finish(r, b) {
     38      resolve({ req: r, buffer: b });
     39    }
     40    chan.asyncOpen(new ChannelListener(finish, null, CL_ALLOW_UNKNOWN_CL));
     41  });
     42 
     43  let json = JSON.parse(buffer);
     44  Assert.equal(json.te, "trailers");
     45 
     46  chan = NetUtil.newChannel({
     47    uri: `https://localhost:${server.port()}/`,
     48    loadUsingSystemPrincipal: true,
     49  }).QueryInterface(Ci.nsIHttpChannel);
     50  chan.loadFlags = Ci.nsIChannel.LOAD_INITIAL_DOCUMENT_URI;
     51  chan.setRequestHeader("TE", "moz_no_te_trailers", false);
     52 
     53  ({ buffer } = await new Promise(resolve => {
     54    function finish(r, b) {
     55      resolve({ req: r, buffer: b });
     56    }
     57    chan.asyncOpen(new ChannelListener(finish, null, CL_ALLOW_UNKNOWN_CL));
     58  }));
     59 
     60  json = JSON.parse(buffer);
     61  Assert.equal(json.te, undefined);
     62 });