netwerk/test/unit/test_bug510359.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/netwerk/test/unit/test_bug510359.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,77 @@
     1.4 +Cu.import("resource://testing-common/httpd.js");
     1.5 +
     1.6 +var httpserver = new HttpServer();
     1.7 +var index = 0;
     1.8 +var tests = [
     1.9 +    { url : "/bug510359", server : "0", expected : "0"},
    1.10 +    { url : "/bug510359", server : "1", expected : "1"},
    1.11 +];
    1.12 +
    1.13 +function setupChannel(suffix, value) {
    1.14 +    var ios = Components.classes["@mozilla.org/network/io-service;1"]
    1.15 +            .getService(Ci.nsIIOService);
    1.16 +    var chan = ios.newChannel("http://localhost:" +
    1.17 +                              httpserver.identity.primaryPort +
    1.18 +                              suffix, "", null);
    1.19 +    var httpChan = chan.QueryInterface(Components.interfaces.nsIHttpChannel);
    1.20 +    httpChan.requestMethod = "GET";
    1.21 +    httpChan.setRequestHeader("x-request", value, false);
    1.22 +    httpChan.setRequestHeader("Cookie", "c="+value, false);
    1.23 +    return httpChan;
    1.24 +}
    1.25 +
    1.26 +function triggerNextTest() {
    1.27 +    var channel = setupChannel(tests[index].url, tests[index].server);
    1.28 +    channel.asyncOpen(new ChannelListener(checkValueAndTrigger, null), null);
    1.29 +}
    1.30 +
    1.31 +function checkValueAndTrigger(request, data, ctx) {
    1.32 +    do_check_eq(tests[index].expected, data);
    1.33 +
    1.34 +    if (index < tests.length - 1) {
    1.35 +        index++;
    1.36 +        triggerNextTest();
    1.37 +    } else {
    1.38 +        httpserver.stop(do_test_finished);
    1.39 +    }
    1.40 +}
    1.41 +
    1.42 +function run_test() {
    1.43 +    httpserver.registerPathHandler("/bug510359", handler);
    1.44 +    httpserver.start(-1);
    1.45 +
    1.46 +    // clear cache
    1.47 +    evict_cache_entries();
    1.48 +
    1.49 +    triggerNextTest();
    1.50 +
    1.51 +    do_test_pending();
    1.52 +}
    1.53 +
    1.54 +function handler(metadata, response) {
    1.55 +    try {
    1.56 +        var IMS = metadata.getHeader("If-Modified-Since");
    1.57 +        response.setStatusLine(metadata.httpVersion, 500, "Failed");
    1.58 +        var msg = "Client should not set If-Modified-Since header";
    1.59 +        response.bodyOutputStream.write(msg, msg.length);
    1.60 +    } catch(ex) {
    1.61 +        response.setStatusLine(metadata.httpVersion, 200, "Ok");
    1.62 +        response.setHeader("Content-Type", "text/plain", false);
    1.63 +        response.setHeader("Last-Modified", getDateString(-1), false);
    1.64 +        response.setHeader("Vary", "Cookie", false);
    1.65 +        var body = metadata.getHeader("x-request");
    1.66 +        response.bodyOutputStream.write(body, body.length);
    1.67 +    }
    1.68 +}
    1.69 +
    1.70 +function getDateString(yearDelta) {
    1.71 +    var months = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
    1.72 +            'Sep', 'Oct', 'Nov', 'Dec' ];
    1.73 +    var days = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ];
    1.74 +
    1.75 +    var d = new Date();
    1.76 +    return days[d.getUTCDay()] + ", " + d.getUTCDate() + " "
    1.77 +            + months[d.getUTCMonth()] + " " + (d.getUTCFullYear() + yearDelta)
    1.78 +            + " " + d.getUTCHours() + ":" + d.getUTCMinutes() + ":"
    1.79 +            + d.getUTCSeconds() + " UTC";
    1.80 +}

mercurial