tor-browser

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

test_bug510359.js (2483B)


      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: "/bug510359", server: "0", expected: "0" },
     11  { url: "/bug510359", server: "1", expected: "1" },
     12 ];
     13 
     14 function setupChannel(suffix, value) {
     15  var chan = NetUtil.newChannel({
     16    uri: "http://localhost:" + httpserver.identity.primaryPort + suffix,
     17    loadUsingSystemPrincipal: true,
     18  });
     19  var httpChan = chan.QueryInterface(Ci.nsIHttpChannel);
     20  httpChan.requestMethod = "GET";
     21  httpChan.setRequestHeader("x-request", value, false);
     22  httpChan.setRequestHeader("Cookie", "c=" + value, false);
     23  return httpChan;
     24 }
     25 
     26 function triggerNextTest() {
     27  var channel = setupChannel(tests[index].url, tests[index].server);
     28  channel.asyncOpen(new ChannelListener(checkValueAndTrigger, null));
     29 }
     30 
     31 function checkValueAndTrigger(request, data) {
     32  Assert.equal(tests[index].expected, data);
     33 
     34  if (index < tests.length - 1) {
     35    index++;
     36    triggerNextTest();
     37  } else {
     38    httpserver.stop(do_test_finished);
     39  }
     40 }
     41 
     42 function run_test() {
     43  httpserver.registerPathHandler("/bug510359", handler);
     44  httpserver.start(-1);
     45 
     46  // clear cache
     47  evict_cache_entries();
     48 
     49  triggerNextTest();
     50 
     51  do_test_pending();
     52 }
     53 
     54 function handler(metadata, response) {
     55  try {
     56    metadata.getHeader("If-Modified-Since");
     57    response.setStatusLine(metadata.httpVersion, 500, "Failed");
     58    var msg = "Client should not set If-Modified-Since header";
     59    response.bodyOutputStream.write(msg, msg.length);
     60  } catch (ex) {
     61    response.setStatusLine(metadata.httpVersion, 200, "Ok");
     62    response.setHeader("Content-Type", "text/plain", false);
     63    response.setHeader("Last-Modified", getDateString(-1), false);
     64    response.setHeader("Vary", "Cookie", false);
     65    var body = metadata.getHeader("x-request");
     66    response.bodyOutputStream.write(body, body.length);
     67  }
     68 }
     69 
     70 function getDateString(yearDelta) {
     71  var months = [
     72    "Jan",
     73    "Feb",
     74    "Mar",
     75    "Apr",
     76    "May",
     77    "Jun",
     78    "Jul",
     79    "Aug",
     80    "Sep",
     81    "Oct",
     82    "Nov",
     83    "Dec",
     84  ];
     85  var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
     86 
     87  var d = new Date();
     88  return (
     89    days[d.getUTCDay()] +
     90    ", " +
     91    d.getUTCDate() +
     92    " " +
     93    months[d.getUTCMonth()] +
     94    " " +
     95    (d.getUTCFullYear() + yearDelta) +
     96    " " +
     97    d.getUTCHours() +
     98    ":" +
     99    d.getUTCMinutes() +
    100    ":" +
    101    d.getUTCSeconds() +
    102    " UTC"
    103  );
    104 }