summaryrefslogtreecommitdiffstats
path: root/netwerk/test/unit/test_http_headers.js
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/test/unit/test_http_headers.js')
-rw-r--r--netwerk/test/unit/test_http_headers.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/netwerk/test/unit/test_http_headers.js b/netwerk/test/unit/test_http_headers.js
new file mode 100644
index 000000000..586e064aa
--- /dev/null
+++ b/netwerk/test/unit/test_http_headers.js
@@ -0,0 +1,70 @@
+Cu.import("resource://gre/modules/NetUtil.jsm");
+
+function check_request_header(chan, name, value) {
+ var chanValue;
+ try {
+ chanValue = chan.getRequestHeader(name);
+ } catch (e) {
+ do_throw("Expected to find header '" + name + "' but didn't find it");
+ }
+ do_check_eq(chanValue, value);
+}
+
+function run_test() {
+
+ var chan = NetUtil.newChannel ({
+ uri: "http://www.mozilla.org/",
+ loadUsingSystemPrincipal: true
+ }).QueryInterface(Components.interfaces.nsIHttpChannel);
+
+ check_request_header(chan, "host", "www.mozilla.org");
+ check_request_header(chan, "Host", "www.mozilla.org");
+
+ chan.setRequestHeader("foopy", "bar", false);
+ check_request_header(chan, "foopy", "bar");
+
+ chan.setRequestHeader("foopy", "baz", true);
+ check_request_header(chan, "foopy", "bar, baz");
+
+ for (var i = 0; i < 100; ++i)
+ chan.setRequestHeader("foopy" + i, i, false);
+
+ for (var i = 0; i < 100; ++i)
+ check_request_header(chan, "foopy" + i, i);
+
+ var x = false;
+ try {
+ chan.setRequestHeader("foo:py", "baz", false);
+ } catch (e) {
+ x = true;
+ }
+ if (!x)
+ do_throw("header with colon not rejected");
+
+ x = false;
+ try {
+ chan.setRequestHeader("foopy", "b\naz", false);
+ } catch (e) {
+ x = true;
+ }
+ if (!x)
+ do_throw("header value with newline not rejected");
+
+ x = false;
+ try {
+ chan.setRequestHeader("foopy\u0080", "baz", false);
+ } catch (e) {
+ x = true;
+ }
+ if (!x)
+ do_throw("header name with non-ASCII not rejected");
+
+ x = false;
+ try {
+ chan.setRequestHeader("foopy", "b\u0000az", false);
+ } catch (e) {
+ x = true;
+ }
+ if (!x)
+ do_throw("header value with null-byte not rejected");
+}