Bug 1857386 [wpt PR 42383] - Update wpt metadata, a=testonly
[gecko.git] / netwerk / test / unit / test_bug561276.js
blob9176b7c70253741d91c0c3194dcc64c84fb8bc55
1 //
2 // Verify that we hit the net if we discover a cycle of redirects
3 // coming from cache.
4 //
6 "use strict";
8 const { HttpServer } = ChromeUtils.importESModule(
9   "resource://testing-common/httpd.sys.mjs"
12 var httpserver = new HttpServer();
13 var iteration = 0;
15 function setupChannel(suffix) {
16   var chan = NetUtil.newChannel({
17     uri: "http://localhost:" + httpserver.identity.primaryPort + suffix,
18     loadUsingSystemPrincipal: true,
19   });
20   var httpChan = chan.QueryInterface(Ci.nsIHttpChannel);
21   httpChan.requestMethod = "GET";
22   return httpChan;
25 function checkValueAndTrigger(request, data, ctx) {
26   Assert.equal("Ok", data);
27   httpserver.stop(do_test_finished);
30 function run_test() {
31   httpserver.registerPathHandler("/redirect1", redirectHandler1);
32   httpserver.registerPathHandler("/redirect2", redirectHandler2);
33   httpserver.start(-1);
35   // clear cache
36   evict_cache_entries();
38   // load first time
39   var channel = setupChannel("/redirect1");
40   channel.asyncOpen(new ChannelListener(checkValueAndTrigger, null));
42   do_test_pending();
45 function redirectHandler1(metadata, response) {
46   // first time we return a cacheable 302 pointing to next redirect
47   if (iteration < 1) {
48     response.setStatusLine(metadata.httpVersion, 302, "Found");
49     response.setHeader("Cache-Control", "max-age=600", false);
50     response.setHeader("Location", "/redirect2", false);
52     // next time called we return 200
53   } else {
54     response.setStatusLine(metadata.httpVersion, 200, "Ok");
55     response.setHeader("Cache-Control", "max-age=600", false);
56     response.setHeader("Content-Type", "text/plain");
57     response.bodyOutputStream.write("Ok", "Ok".length);
58   }
59   iteration += 1;
62 function redirectHandler2(metadata, response) {
63   response.setStatusLine(metadata.httpVersion, 302, "Found");
64   response.setHeader("Cache-Control", "max-age=600", false);
65   response.setHeader("Location", "/redirect1", false);