summaryrefslogtreecommitdiff
path: root/netwerk/test/unit/test_referrer_policy.js
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/test/unit/test_referrer_policy.js')
-rw-r--r--netwerk/test/unit/test_referrer_policy.js95
1 files changed, 95 insertions, 0 deletions
diff --git a/netwerk/test/unit/test_referrer_policy.js b/netwerk/test/unit/test_referrer_policy.js
new file mode 100644
index 0000000000..f1f9dfd5a3
--- /dev/null
+++ b/netwerk/test/unit/test_referrer_policy.js
@@ -0,0 +1,95 @@
+Cu.import("resource://gre/modules/NetUtil.jsm");
+
+function test_policy(test) {
+ do_print("Running test: " + test.toSource());
+
+ var uri = NetUtil.newURI(test.url, "", null)
+ var chan = NetUtil.newChannel({
+ uri: uri,
+ loadUsingSystemPrincipal: true
+ });
+
+ var referrer = NetUtil.newURI(test.referrer, "", null);
+ chan.QueryInterface(Components.interfaces.nsIHttpChannel);
+ chan.setReferrerWithPolicy(referrer, test.policy);
+ if (test.expectedReferrerSpec === undefined) {
+ try {
+ chan.getRequestHeader("Referer");
+ do_throw("Should not find a Referer header!");
+ } catch(e) {
+ }
+ do_check_eq(chan.referrer, null);
+ } else {
+ var header = chan.getRequestHeader("Referer");
+ do_check_eq(header, test.expectedReferrerSpec);
+ do_check_eq(chan.referrer.asciiSpec, test.expectedReferrerSpec);
+ }
+}
+
+const nsIHttpChannel = Ci.nsIHttpChannel;
+var gTests = [
+ {
+ policy: nsIHttpChannel.REFERRER_POLICY_DEFAULT,
+ url: "https://test.example/foo",
+ referrer: "https://test.example/referrer",
+ expectedReferrerSpec: "https://test.example/referrer"
+ },
+ {
+ policy: nsIHttpChannel.REFERRER_POLICY_DEFAULT,
+ url: "https://sub1.\xe4lt.example/foo",
+ referrer: "https://sub1.\xe4lt.example/referrer",
+ expectedReferrerSpec: "https://sub1.xn--lt-uia.example/referrer"
+ },
+ {
+ policy: nsIHttpChannel.REFERRER_POLICY_DEFAULT,
+ url: "http://test.example/foo",
+ referrer: "https://test.example/referrer",
+ expectedReferrerSpec: undefined
+ },
+ {
+ policy: nsIHttpChannel.REFERRER_POLICY_NO_REFERRER,
+ url: "https://test.example/foo",
+ referrer: "https://test.example/referrer",
+ expectedReferrerSpec: undefined
+ },
+ {
+ policy: nsIHttpChannel.REFERRER_POLICY_ORIGIN,
+ url: "https://test.example/foo",
+ referrer: "https://test.example/referrer",
+ expectedReferrerSpec: "https://test.example/"
+ },
+ {
+ policy: nsIHttpChannel.REFERRER_POLICY_ORIGIN,
+ url: "https://sub1.\xe4lt.example/foo",
+ referrer: "https://sub1.\xe4lt.example/referrer",
+ expectedReferrerSpec: "https://sub1.xn--lt-uia.example/"
+ },
+ {
+ policy: nsIHttpChannel.REFERRER_POLICY_UNSAFE_URL,
+ url: "https://test.example/foo",
+ referrer: "https://test.example/referrer",
+ expectedReferrerSpec: "https://test.example/referrer"
+ },
+ {
+ policy: nsIHttpChannel.REFERRER_POLICY_UNSAFE_URL,
+ url: "https://sub1.\xe4lt.example/foo",
+ referrer: "https://sub1.\xe4lt.example/referrer",
+ expectedReferrerSpec: "https://sub1.xn--lt-uia.example/referrer"
+ },
+ {
+ policy: nsIHttpChannel.REFERRER_POLICY_UNSAFE_URL,
+ url: "http://test.example/foo",
+ referrer: "https://test.example/referrer",
+ expectedReferrerSpec: "https://test.example/referrer"
+ },
+ {
+ policy: nsIHttpChannel.REFERRER_POLICY_UNSAFE_URL,
+ url: "http://sub1.\xe4lt.example/foo",
+ referrer: "https://sub1.\xe4lt.example/referrer",
+ expectedReferrerSpec: "https://sub1.xn--lt-uia.example/referrer"
+ },
+];
+
+function run_test() {
+ gTests.forEach(test => test_policy(test));
+}