diff options
Diffstat (limited to 'dom/tests/mochitest/fetch/test_headers_mainthread.html')
-rw-r--r-- | dom/tests/mochitest/fetch/test_headers_mainthread.html | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/dom/tests/mochitest/fetch/test_headers_mainthread.html b/dom/tests/mochitest/fetch/test_headers_mainthread.html new file mode 100644 index 000000000..9bdc89b71 --- /dev/null +++ b/dom/tests/mochitest/fetch/test_headers_mainthread.html @@ -0,0 +1,155 @@ +<!-- Any copyright is dedicated to the Public Domain. + - http://creativecommons.org/publicdomain/zero/1.0/ --> +<!DOCTYPE HTML> +<html> +<head> + <title>Test Fetch Headers - Basic</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<script type="text/javascript" src="test_headers_common.js"> </script> +<script type="text/javascript"> +// Main thread specific tests because they need SpecialPowers. Expects +// test_headers_common.js to already be loaded. + +function TestRequestHeaders() { + is(typeof Headers, "function", "Headers global constructor exists."); + var headers = new Headers(); + ok(headers, "Constructed empty Headers object"); + SpecialPowers.wrap(headers).guard = "request"; + TestCoreBehavior(headers, "foo"); + var forbidden = [ + "Accept-Charset", + "Accept-Encoding", + "Access-Control-Request-Headers", + "Access-Control-Request-Method", + "Connection", + "Content-Length", + "Cookie", + "Cookie2", + "Date", + "DNT", + "Expect", + "Host", + "Keep-Alive", + "Origin", + "Referer", + "TE", + "Trailer", + "Transfer-Encoding", + "Upgrade", + "Via", + "Proxy-Authorization", + "Proxy-blarg", + "Proxy-", + "Sec-foo", + "Sec-" + ]; + + for (var i = 0, n = forbidden.length; i < n; ++i) { + var name = forbidden[i]; + headers.append(name, "hmm"); + checkNotHas(headers, name, "Should not be able to append " + name + " to request headers"); + headers.set(name, "hmm"); + checkNotHas(headers, name, "Should not be able to set " + name + " on request headers"); + } +} + +function TestRequestNoCorsHeaders() { + is(typeof Headers, "function", "Headers global constructor exists."); + var headers = new Headers(); + ok(headers, "Constructed empty Headers object"); + SpecialPowers.wrap(headers).guard = "request-no-cors"; + + headers.append("foo", "bar"); + checkNotHas(headers, "foo", "Should not be able to append arbitrary headers to request-no-cors headers."); + headers.set("foo", "bar"); + checkNotHas(headers, "foo", "Should not be able to set arbitrary headers on request-no-cors headers."); + + var simpleNames = [ + "Accept", + "Accept-Language", + "Content-Language" + ]; + + var simpleContentTypes = [ + "application/x-www-form-urlencoded", + "multipart/form-data", + "text/plain", + "application/x-www-form-urlencoded; charset=utf-8", + "multipart/form-data; charset=utf-8", + "text/plain; charset=utf-8" + ]; + + for (var i = 0, n = simpleNames.length; i < n; ++i) { + var name = simpleNames[i]; + headers.append(name, "hmm"); + checkHas(headers, name, "Should be able to append " + name + " to request-no-cors headers"); + headers.set(name, "hmm"); + checkHas(headers, name, "Should be able to set " + name + " on request-no-cors headers"); + } + + for (var i = 0, n = simpleContentTypes.length; i < n; ++i) { + var value = simpleContentTypes[i]; + headers.append("Content-Type", value); + checkHas(headers, "Content-Type", "Should be able to append " + value + " Content-Type to request-no-cors headers"); + headers.delete("Content-Type"); + headers.set("Content-Type", value); + checkHas(headers, "Content-Type", "Should be able to set " + value + " Content-Type on request-no-cors headers"); + } +} + +function TestResponseHeaders() { + is(typeof Headers, "function", "Headers global constructor exists."); + var headers = new Headers(); + ok(headers, "Constructed empty Headers object"); + SpecialPowers.wrap(headers).guard = "response"; + TestCoreBehavior(headers, "foo"); + var forbidden = [ + "Set-Cookie", + "Set-Cookie2" + ]; + + for (var i = 0, n = forbidden.length; i < n; ++i) { + var name = forbidden[i]; + headers.append(name, "hmm"); + checkNotHas(headers, name, "Should not be able to append " + name + " to response headers"); + headers.set(name, "hmm"); + checkNotHas(headers, name, "Should not be able to set " + name + " on response headers"); + } +} + +function TestImmutableHeaders() { + is(typeof Headers, "function", "Headers global constructor exists."); + var headers = new Headers(); + ok(headers, "Constructed empty Headers object"); + TestCoreBehavior(headers, "foo"); + headers.append("foo", "atleastone"); + + SpecialPowers.wrap(headers).guard = "immutable"; + + shouldThrow(function() { + headers.append("foo", "wat"); + }, TypeError, "Should not be able to append to immutable headers"); + + shouldThrow(function() { + headers.set("foo", "wat"); + }, TypeError, "Should not be able to set immutable headers"); + + shouldThrow(function() { + headers.delete("foo"); + }, TypeError, "Should not be able to delete immutable headers"); + + checkHas(headers, "foo", "Should be able to check immutable headers"); + ok(headers.get("foo"), "Should be able to get immutable headers"); +} + +TestRequestHeaders(); +TestRequestNoCorsHeaders(); +TestResponseHeaders(); +TestImmutableHeaders(); +</script> +</body> +</html> + |