netwerk/test/unit/test_bug561276.js

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rw-r--r--

Ignore runtime configuration files generated during quality assurance.

     1 //
     2 // Verify that we hit the net if we discover a cycle of redirects
     3 // coming from cache.
     4 //
     6 Cu.import("resource://testing-common/httpd.js");
     8 var httpserver = new HttpServer();
     9 var iteration = 0;
    11 function setupChannel(suffix)
    12 {
    13     var ios =
    14         Components.classes["@mozilla.org/network/io-service;1"]
    15         .getService(Ci.nsIIOService);
    16     var chan = ios.newChannel("http://localhost:" +
    17 			     httpserver.identity.primaryPort + suffix, "", null);
    18     var httpChan = chan.QueryInterface(Components.interfaces.nsIHttpChannel);
    19     httpChan.requestMethod = "GET";
    20     return httpChan;
    21 }
    23 function checkValueAndTrigger(request, data, ctx)
    24 {
    25     do_check_eq("Ok", data);
    26     httpserver.stop(do_test_finished);
    27 }
    29 function run_test()
    30 {
    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), null);
    42     do_test_pending();
    43 }
    45 function redirectHandler1(metadata, response)
    46 {
    47     // first time we return a cacheable 302 pointing to next redirect
    48 	if (iteration < 1) {
    49 	    response.setStatusLine(metadata.httpVersion, 302, "Found");
    50 	    response.setHeader("Cache-Control", "max-age=600", false);
    51 	    response.setHeader("Location", "/redirect2", false);
    53 	// next time called we return 200
    54     } else {
    55 	    response.setStatusLine(metadata.httpVersion, 200, "Ok");
    56 	    response.setHeader("Cache-Control", "max-age=600", false);
    57         response.setHeader("Content-Type", "text/plain");
    58         response.bodyOutputStream.write("Ok", "Ok".length);
    59     }
    60 	iteration += 1;
    61 }
    63 function redirectHandler2(metadata, response)
    64 {
    65     response.setStatusLine(metadata.httpVersion, 302, "Found");
    66     response.setHeader("Cache-Control", "max-age=600", false);
    67     response.setHeader("Location", "/redirect1", false);
    68 }

mercurial