tor-browser

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

test_getHost.js (1775B)


      1 // Test getLocalHost/getLocalPort and getRemoteHost/getRemotePort.
      2 
      3 "use strict";
      4 
      5 const { HttpServer } = ChromeUtils.importESModule(
      6  "resource://testing-common/httpd.sys.mjs"
      7 );
      8 
      9 var httpserver = new HttpServer();
     10 httpserver.start(-1);
     11 const PORT = httpserver.identity.primaryPort;
     12 
     13 var gotOnStartRequest = false;
     14 
     15 function CheckGetHostListener() {}
     16 
     17 CheckGetHostListener.prototype = {
     18  onStartRequest(request) {
     19    dump("*** listener onStartRequest\n");
     20 
     21    gotOnStartRequest = true;
     22 
     23    request.QueryInterface(Ci.nsIHttpChannelInternal);
     24    try {
     25      Assert.equal(request.localAddress, "127.0.0.1");
     26      Assert.equal(request.localPort > 0, true);
     27      Assert.notEqual(request.localPort, PORT);
     28      Assert.equal(request.remoteAddress, "127.0.0.1");
     29      Assert.equal(request.remotePort, PORT);
     30    } catch (e) {
     31      Assert.ok(0, "Get local/remote host/port throws an error!");
     32    }
     33  },
     34 
     35  onStopRequest() {
     36    dump("*** listener onStopRequest\n");
     37 
     38    Assert.equal(gotOnStartRequest, true);
     39    httpserver.stop(do_test_finished);
     40  },
     41 
     42  QueryInterface: ChromeUtils.generateQI(["nsIRequestObserver"]),
     43 };
     44 
     45 function make_channel(url) {
     46  return NetUtil.newChannel({
     47    uri: url,
     48    loadUsingSystemPrincipal: true,
     49  }).QueryInterface(Ci.nsIHttpChannel);
     50 }
     51 
     52 function test_handler(metadata, response) {
     53  response.setHeader("Content-Type", "text/html", false);
     54  response.setStatusLine(metadata.httpVersion, 200, "OK");
     55  var responseBody = "blah blah";
     56  response.bodyOutputStream.write(responseBody, responseBody.length);
     57 }
     58 
     59 function run_test() {
     60  httpserver.registerPathHandler("/testdir", test_handler);
     61 
     62  var channel = make_channel("http://localhost:" + PORT + "/testdir");
     63  channel.asyncOpen(new CheckGetHostListener());
     64  do_test_pending();
     65 }