tor-browser

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

test_bug553888.js (1955B)


      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 var { HttpServer } = ChromeUtils.importESModule(
      6  "resource://testing-common/httpd.sys.mjs"
      7 );
      8 
      9 var server = new HttpServer();
     10 server.start(-1);
     11 
     12 const SERVER_PORT = server.identity.primaryPort;
     13 const HTTP_BASE = "http://localhost:" + SERVER_PORT;
     14 const redirectPath = "/redirect";
     15 const headerCheckPath = "/headerCheck";
     16 const redirectURL = HTTP_BASE + redirectPath;
     17 const headerCheckURL = HTTP_BASE + headerCheckPath;
     18 
     19 function redirectHandler(metadata, response) {
     20  response.setStatusLine(metadata.httpVersion, 302, "Found");
     21  response.setHeader("Location", headerCheckURL, false);
     22 }
     23 
     24 function headerCheckHandler(metadata, response) {
     25  try {
     26    let headerValue = metadata.getHeader("X-Custom-Header");
     27    Assert.equal(headerValue, "present");
     28  } catch (e) {
     29    do_throw("No header present after redirect");
     30  }
     31  try {
     32    metadata.getHeader("X-Unwanted-Header");
     33    do_throw("Unwanted header present after redirect");
     34  } catch (x) {}
     35  response.setStatusLine(metadata.httpVersion, 200, "OK");
     36  response.setHeader("Content-Type", "text/plain");
     37  response.write("");
     38 }
     39 
     40 function run_test() {
     41  server.registerPathHandler(redirectPath, redirectHandler);
     42  server.registerPathHandler(headerCheckPath, headerCheckHandler);
     43 
     44  do_test_pending();
     45  var request = new XMLHttpRequest();
     46  request.open("GET", redirectURL, true);
     47  request.setRequestHeader("X-Custom-Header", "present");
     48  request.addEventListener("readystatechange", function () {
     49    if (request.readyState == 4) {
     50      Assert.equal(request.status, 200);
     51      server.stop(do_test_finished);
     52    }
     53  });
     54  request.send();
     55  try {
     56    request.setRequestHeader("X-Unwanted-Header", "present");
     57    do_throw("Shouldn't be able to set a header after send");
     58  } catch (x) {}
     59 }