summaryrefslogtreecommitdiffstats
path: root/dom/xhr/tests/test_XHR_anon.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/xhr/tests/test_XHR_anon.html')
-rw-r--r--dom/xhr/tests/test_XHR_anon.html180
1 files changed, 180 insertions, 0 deletions
diff --git a/dom/xhr/tests/test_XHR_anon.html b/dom/xhr/tests/test_XHR_anon.html
new file mode 100644
index 000000000..ed9271a04
--- /dev/null
+++ b/dom/xhr/tests/test_XHR_anon.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Test for XMLHttpRequest with system privileges</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body onload="setup();">
+<p id="display">
+<iframe id="loader"></iframe>
+</p>
+<div id="content" style="display: none">
+
+</div>
+<pre id="test">
+<script class="testbody" type="application/javascript;version=1.8">
+
+// An XHR with the anon flag set will not send cookie and auth information.
+const TEST_URL = "http://example.com/tests/dom/xhr/tests/file_XHR_anon.sjs";
+document.cookie = "foo=bar";
+
+let am = {
+ authMgr: null,
+
+ init: function() {
+ this.authMgr = SpecialPowers.Cc["@mozilla.org/network/http-auth-manager;1"]
+ .getService(SpecialPowers.Ci.nsIHttpAuthManager)
+ },
+
+ addIdentity: function() {
+ this.authMgr.setAuthIdentity("http", "example.com", -1, "basic", "testrealm",
+ "", "example.com", "user1", "password1");
+ },
+
+ tearDown: function() {
+ this.authMgr.clearAll();
+ },
+}
+
+var tests = [ test1, test2, test2a, test3, test3, test3, test4, test4, test4, test5, test5, test5 ];
+
+function runTests() {
+ if (!tests.length) {
+ am.tearDown();
+
+ // Resetting the cookie.
+ document.cookie = "foo=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
+ SimpleTest.finish();
+ return;
+ }
+
+ var test = tests.shift();
+ test();
+}
+
+function test1() {
+ am.addIdentity();
+
+ let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+ is(xhr.mozAnon, true, "test1: .mozAnon == true");
+ xhr.open("GET", TEST_URL);
+ xhr.onload = function onload() {
+ is(xhr.status, 200, "test1: " + xhr.responseText);
+ am.tearDown();
+ runTests();
+ };
+ xhr.onerror = function onerror() {
+ ok(false, "Got an error event!");
+ am.tearDown();
+ runTests();
+ }
+ xhr.send();
+}
+
+function test2() {
+ am.addIdentity();
+
+ let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+ is(xhr.mozAnon, true, "test2: .mozAnon == true");
+ xhr.open("GET", TEST_URL + "?expectAuth=true", true,
+ "user2name", "pass2word");
+ xhr.onload = function onload() {
+ is(xhr.status, 200, "test2: " + xhr.responseText);
+ let response = JSON.parse(xhr.responseText);
+ is(response.authorization, "Basic dXNlcjJuYW1lOnBhc3Myd29yZA==");
+ am.tearDown();
+ runTests();
+ };
+ xhr.onerror = function onerror() {
+ ok(false, "Got an error event!");
+ am.tearDown();
+ runTests();
+ }
+ xhr.send();
+}
+
+function test2a() {
+ am.addIdentity();
+
+ let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+ is(xhr.mozAnon, true, "test2: .mozAnon == true");
+ xhr.open("GET", TEST_URL + "?expectAuth=true", true,
+ "user1", "pass2word");
+ xhr.onload = function onload() {
+ is(xhr.status, 200, "test2: " + xhr.responseText);
+ let response = JSON.parse(xhr.responseText);
+ is(response.authorization, "Basic dXNlcjE6cGFzczJ3b3Jk");
+ am.tearDown();
+ runTests();
+ };
+ xhr.onerror = function onerror() {
+ ok(false, "Got an error event!");
+ am.tearDown();
+ runTests();
+ }
+ xhr.send();
+}
+
+function test3() {
+ am.addIdentity();
+
+ let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+ is(xhr.mozAnon, true, "test3: .mozAnon == true");
+ xhr.open("GET", TEST_URL + "?expectAuth=true", true);
+ xhr.onload = function onload() {
+ is(xhr.status, 401, "test3: " + xhr.responseText);
+ am.tearDown();
+ runTests();
+ };
+ xhr.onerror = function onerror() {
+ ok(false, "Got an error event!");
+ am.tearDown();
+ runTests();
+ }
+ xhr.send();
+}
+
+function test4() {
+ let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+ is(xhr.mozAnon, true, "test4: .mozAnon == true");
+ xhr.open("GET", TEST_URL + "?expectAuth=true", true);
+ xhr.onload = function onload() {
+ is(xhr.status, 401, "test4: " + xhr.responseText);
+ runTests();
+ };
+ xhr.onerror = function onerror() {
+ ok(false, "Got an error event!");
+ runTests();
+ }
+ xhr.send();
+}
+
+function test5() {
+ let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
+ is(xhr.mozAnon, true, "test5: .mozAnon == true");
+ xhr.open("GET", TEST_URL + "?expectAuth=true", true,
+ "user2name", "pass2word");
+ xhr.onload = function onload() {
+ is(xhr.status, 200, "test5: " + xhr.responseText);
+ let response = JSON.parse(xhr.responseText);
+ is(response.authorization, "Basic dXNlcjJuYW1lOnBhc3Myd29yZA==");
+ runTests();
+ };
+ xhr.onerror = function onerror() {
+ ok(false, "Got an error event!");
+ runTests();
+ }
+ xhr.send();
+}
+
+function setup() {
+ am.init();
+ SimpleTest.waitForExplicitFinish();
+ SpecialPowers.pushPermissions([{'type': 'systemXHR', 'allow': true, 'context': document}], runTests);
+}
+</script>
+</pre>
+</body>
+</html>