Bug 1845311 - [Part 2] Use ChromeUtils.defineLazyGetter in more places r=arai,webcomp...
[gecko.git] / netwerk / test / unit / test_421.js
blob680973384e4ec26cfab7db7d05ceba1c1098a0ae
1 "use strict";
3 const { HttpServer } = ChromeUtils.importESModule(
4   "resource://testing-common/httpd.sys.mjs"
5 );
7 ChromeUtils.defineLazyGetter(this, "URL", function () {
8   return "http://localhost:" + httpserver.identity.primaryPort;
9 });
11 var httpserver = new HttpServer();
12 var testpath = "/421";
13 var httpbody = "0123456789";
14 var channel;
16 function run_test() {
17   setup_test();
18   do_test_pending();
21 function setup_test() {
22   httpserver.registerPathHandler(testpath, serverHandler);
23   httpserver.start(-1);
25   channel = setupChannel(testpath);
27   channel.asyncOpen(new ChannelListener(checkRequestResponse, channel));
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;
40 var iters = 0;
42 function serverHandler(metadata, response) {
43   response.setHeader("Content-Type", "text/plain", false);
45   if (!iters) {
46     response.setStatusLine("1.1", 421, "Not Authoritative " + iters);
47   } else {
48     response.setStatusLine("1.1", 200, "OK");
49   }
50   ++iters;
52   response.bodyOutputStream.write(httpbody, httpbody.length);
55 function checkRequestResponse(request, data, context) {
56   Assert.equal(channel.responseStatus, 200);
57   Assert.equal(channel.responseStatusText, "OK");
58   Assert.ok(channel.requestSucceeded);
60   Assert.equal(channel.contentType, "text/plain");
61   Assert.equal(channel.contentLength, httpbody.length);
62   Assert.equal(data, httpbody);
64   httpserver.stop(do_test_finished);