tor-browser

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

test_xmlhttprequest.js (1351B)


      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 testpath = "/simple";
      9 var httpbody = "<?xml version='1.0' ?><root>0123456789</root>";
     10 
     11 function createXHR(async) {
     12  var xhr = new XMLHttpRequest();
     13  xhr.open(
     14    "GET",
     15    "http://localhost:" + httpserver.identity.primaryPort + testpath,
     16    async
     17  );
     18  return xhr;
     19 }
     20 
     21 function checkResults(xhr) {
     22  if (xhr.readyState != 4) {
     23    return false;
     24  }
     25 
     26  Assert.equal(xhr.status, 200);
     27  Assert.equal(xhr.responseText, httpbody);
     28 
     29  var root_node = xhr.responseXML.getElementsByTagName("root").item(0);
     30  Assert.equal(root_node.firstChild.data, "0123456789");
     31  return true;
     32 }
     33 
     34 function run_test() {
     35  httpserver.registerPathHandler(testpath, serverHandler);
     36  httpserver.start(-1);
     37 
     38  // Test sync XHR sending
     39  var sync = createXHR(false);
     40  sync.send(null);
     41  checkResults(sync);
     42 
     43  // Test async XHR sending
     44  let async = createXHR(true);
     45  async.addEventListener("readystatechange", function () {
     46    if (checkResults(async)) {
     47      httpserver.stop(do_test_finished);
     48    }
     49  });
     50  async.send(null);
     51  do_test_pending();
     52 }
     53 
     54 function serverHandler(metadata, response) {
     55  response.setHeader("Content-Type", "text/xml", false);
     56  response.bodyOutputStream.write(httpbody, httpbody.length);
     57 }