tor-browser

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

test_421.js (1546B)


      1 "use strict";
      2 
      3 const { HttpServer } = ChromeUtils.importESModule(
      4  "resource://testing-common/httpd.sys.mjs"
      5 );
      6 
      7 ChromeUtils.defineLazyGetter(this, "URL", function () {
      8  return "http://localhost:" + httpserver.identity.primaryPort;
      9 });
     10 
     11 var httpserver = new HttpServer();
     12 var testpath = "/421";
     13 var httpbody = "0123456789";
     14 var channel;
     15 
     16 function run_test() {
     17  setup_test();
     18  do_test_pending();
     19 }
     20 
     21 function setup_test() {
     22  httpserver.registerPathHandler(testpath, serverHandler);
     23  httpserver.start(-1);
     24 
     25  channel = setupChannel(testpath);
     26 
     27  channel.asyncOpen(new ChannelListener(checkRequestResponse, channel));
     28 }
     29 
     30 function setupChannel(path) {
     31  var chan = NetUtil.newChannel({
     32    uri: URL + path,
     33    loadUsingSystemPrincipal: true,
     34  });
     35  chan.QueryInterface(Ci.nsIHttpChannel);
     36  chan.requestMethod = "GET";
     37  return chan;
     38 }
     39 
     40 var iters = 0;
     41 
     42 function serverHandler(metadata, response) {
     43  response.setHeader("Content-Type", "text/plain", false);
     44 
     45  if (!iters) {
     46    response.setStatusLine("1.1", 421, "Not Authoritative " + iters);
     47  } else {
     48    response.setStatusLine("1.1", 200, "OK");
     49  }
     50  ++iters;
     51 
     52  response.bodyOutputStream.write(httpbody, httpbody.length);
     53 }
     54 
     55 function checkRequestResponse(request, data) {
     56  Assert.equal(channel.responseStatus, 200);
     57  Assert.equal(channel.responseStatusText, "OK");
     58  Assert.ok(channel.requestSucceeded);
     59 
     60  Assert.equal(channel.contentType, "text/plain");
     61  Assert.equal(channel.contentLength, httpbody.length);
     62  Assert.equal(data, httpbody);
     63 
     64  httpserver.stop(do_test_finished);
     65 }