netwerk/test/unit/test_referrer.js

Thu, 15 Jan 2015 21:03:48 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 21:03:48 +0100
branch
TOR_BUG_9701
changeset 11
deefc01c0e14
permissions
-rw-r--r--

Integrate friendly tips from Tor colleagues to make (or not) 4.5 alpha 3;
This includes removal of overloaded (but unused) methods, and addition of
a overlooked call to DataStruct::SetData(nsISupports, uint32_t, bool.)

     1 var ios = Cc["@mozilla.org/network/io-service;1"].
     2     getService(Ci.nsIIOService);
     4 function getTestReferrer(server_uri, referer_uri) {
     5   var chan = ios.newChannel(server_uri, "", null);
     6   chan.QueryInterface(Components.interfaces.nsIHttpChannel);
     7   chan.referrer = ios.newURI(referer_uri, null, null);
     8   var header = null;
     9   try {
    10     header = chan.getRequestHeader("Referer");
    11   }
    12   catch (NS_ERROR_NOT_AVAILABLE) {}
    13   return header;
    14 }
    16 function run_test() {
    17   var prefs = Cc["@mozilla.org/preferences-service;1"]
    18                 .getService(Components.interfaces.nsIPrefBranch);
    20   var server_uri = "http://bar.examplesite.com/path2";
    21   var server_uri_2 = "http://bar.example.com/anotherpath";
    22   var referer_uri = "http://foo.example.com/path";
    23   var referer_uri_2 = "http://bar.examplesite.com/path3?q=blah";
    24   var referer_uri_2_anchor = "http://bar.examplesite.com/path3?q=blah#anchor";
    26   // for https tests
    27   var server_uri_https = "https://bar.example.com/anotherpath";
    28   var referer_uri_https = "https://bar.example.com/path3?q=blah";
    30   // tests for sendRefererHeader
    31   prefs.setIntPref("network.http.sendRefererHeader", 0);
    32   do_check_null(getTestReferrer(server_uri, referer_uri));
    33   prefs.setIntPref("network.http.sendRefererHeader", 2);
    34   do_check_eq(getTestReferrer(server_uri, referer_uri), referer_uri);
    36   // test that https ref is not sent to http
    37   do_check_null(getTestReferrer(server_uri_2, referer_uri_https));
    39   // tests for referer.spoofSource
    40   prefs.setBoolPref("network.http.referer.spoofSource", true);
    41   do_check_eq(getTestReferrer(server_uri, referer_uri), server_uri);
    42   prefs.setBoolPref("network.http.referer.spoofSource", false);
    43   do_check_eq(getTestReferrer(server_uri, referer_uri), referer_uri);
    45   // tests for referer.XOriginPolicy
    46   prefs.setIntPref("network.http.referer.XOriginPolicy", 2);
    47   do_check_null(getTestReferrer(server_uri_2, referer_uri));
    48   do_check_eq(getTestReferrer(server_uri, referer_uri_2), referer_uri_2);
    49   prefs.setIntPref("network.http.referer.XOriginPolicy", 1);
    50   do_check_eq(getTestReferrer(server_uri_2, referer_uri), referer_uri);
    51   do_check_null(getTestReferrer(server_uri, referer_uri));
    52   // https test
    53   do_check_eq(getTestReferrer(server_uri_https, referer_uri_https), referer_uri_https);
    54   prefs.setIntPref("network.http.referer.XOriginPolicy", 0);
    55   do_check_eq(getTestReferrer(server_uri, referer_uri), referer_uri);
    57   // tests for referer.trimmingPolicy
    58   prefs.setIntPref("network.http.referer.trimmingPolicy", 1);
    59   do_check_eq(getTestReferrer(server_uri, referer_uri_2), "http://bar.examplesite.com/path3");
    60   prefs.setIntPref("network.http.referer.trimmingPolicy", 2);
    61   do_check_eq(getTestReferrer(server_uri, referer_uri_2), "http://bar.examplesite.com");
    62   // https test
    63   do_check_eq(getTestReferrer(server_uri_https, referer_uri_https), "https://bar.example.com");
    64   prefs.setIntPref("network.http.referer.trimmingPolicy", 0);
    65   // test that anchor is lopped off in ordinary case
    66   do_check_eq(getTestReferrer(server_uri, referer_uri_2_anchor), referer_uri_2);
    68   // combination test: send spoofed path-only when hosts match
    69   var combo_referer_uri = "http://blah.foo.com/path?q=hot";
    70   var dest_uri = "http://blah.foo.com:9999/spoofedpath?q=bad";
    71   prefs.setIntPref("network.http.referer.trimmingPolicy", 1);
    72   prefs.setBoolPref("network.http.referer.spoofSource", true);
    73   prefs.setIntPref("network.http.referer.XOriginPolicy", 2);
    74   do_check_eq(getTestReferrer(dest_uri, combo_referer_uri), "http://blah.foo.com:9999/spoofedpath");
    75   do_check_null(getTestReferrer(dest_uri, "http://gah.foo.com/anotherpath"));
    76 }

mercurial