tor-browser

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

test_nojsredir.js (1611B)


      1 "use strict";
      2 
      3 const { HttpServer } = ChromeUtils.importESModule(
      4  "resource://testing-common/httpd.sys.mjs"
      5 );
      6 
      7 var httpserver = new HttpServer();
      8 var index = 0;
      9 var tests = [
     10  { url: "/test/test", datalen: 16 },
     11 
     12  // Test that the http channel fails and the response body is suppressed
     13  // bug 255119
     14  {
     15    url: "/test/test",
     16    responseheader: ["Location: javascript:alert()"],
     17    flags: CL_EXPECT_FAILURE,
     18    datalen: 0,
     19  },
     20 ];
     21 
     22 function setupChannel(url) {
     23  return NetUtil.newChannel({
     24    uri: "http://localhost:" + httpserver.identity.primaryPort + url,
     25    loadUsingSystemPrincipal: true,
     26  });
     27 }
     28 
     29 function startIter() {
     30  var channel = setupChannel(tests[index].url);
     31  channel.asyncOpen(
     32    new ChannelListener(completeIter, channel, tests[index].flags)
     33  );
     34 }
     35 
     36 function completeIter(request, data) {
     37  Assert.equal(data.length, tests[index].datalen);
     38  if (++index < tests.length) {
     39    startIter();
     40  } else {
     41    httpserver.stop(do_test_finished);
     42  }
     43 }
     44 
     45 function run_test() {
     46  httpserver.registerPathHandler("/test/test", handler);
     47  httpserver.start(-1);
     48 
     49  startIter();
     50  do_test_pending();
     51 }
     52 
     53 function handler(metadata, response) {
     54  var body = "thequickbrownfox";
     55  response.setHeader("Content-Type", "text/plain", false);
     56 
     57  var header = tests[index].responseheader;
     58  if (header != undefined) {
     59    for (var i = 0; i < header.length; i++) {
     60      var splitHdr = header[i].split(": ");
     61      response.setHeader(splitHdr[0], splitHdr[1], false);
     62    }
     63  }
     64 
     65  response.setStatusLine(metadata.httpVersion, 302, "Redirected");
     66  response.bodyOutputStream.write(body, body.length);
     67 }