content/base/test/test_XHR_anon.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4   <meta charset="utf-8">
     5   <title>Test for XMLHttpRequest with system privileges</title>
     6   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>        
     7   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
     8 </head>
     9 <body onload="setup();">
    10 <p id="display">
    11 <iframe id="loader"></iframe>
    12 </p>
    13 <div id="content" style="display: none">
    15 </div>
    16 <pre id="test">
    17 <script class="testbody" type="application/javascript;version=1.8">
    19 // An XHR with the anon flag set will not send cookie and auth information.
    20 const TEST_URL = "http://example.com/tests/content/base/test/file_XHR_anon.sjs";
    21 document.cookie = "foo=bar";
    23 let am = {
    24   authMgr: null,
    26   init: function() {
    27     this.authMgr = SpecialPowers.Cc["@mozilla.org/network/http-auth-manager;1"]
    28                                 .getService(SpecialPowers.Ci.nsIHttpAuthManager)
    29   },
    31   addIdentity: function() {
    32     this.authMgr.setAuthIdentity("http", "example.com", -1, "basic", "testrealm",
    33                                  "", "example.com", "user1", "password1");
    34   },
    36   tearDown: function() {
    37     this.authMgr.clearAll();
    38   },
    39 }
    41 var tests = [ test1, test2, test2a, test3, test3, test3, test4, test4, test4, test5, test5, test5 ];
    43 function runTests() {
    44   if (!tests.length) {
    45     am.tearDown();
    46     SimpleTest.finish();
    47     return;
    48   }
    50   var test = tests.shift();
    51   test();
    52 }
    54 function test1() {
    55   am.addIdentity();
    57   let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
    58   is(xhr.mozAnon, true, "test1: .mozAnon == true");
    59   xhr.open("GET", TEST_URL);
    60   xhr.onload = function onload() {
    61     is(xhr.status, 200, "test1: " + xhr.responseText);
    62     am.tearDown();
    63     runTests();
    64   };
    65   xhr.onerror = function onerror() {
    66     ok(false, "Got an error event!");
    67     am.tearDown();
    68     runTests();
    69   }
    70   xhr.send();
    71 }
    73 function test2() {
    74   am.addIdentity();
    76   let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
    77   is(xhr.mozAnon, true, "test2: .mozAnon == true");
    78   xhr.open("GET", TEST_URL + "?expectAuth=true", true,
    79            "user2name", "pass2word");
    80   xhr.onload = function onload() {
    81     is(xhr.status, 200, "test2: " + xhr.responseText);
    82     let response = JSON.parse(xhr.responseText);
    83     is(response.authorization, "Basic dXNlcjJuYW1lOnBhc3Myd29yZA==");
    84     am.tearDown();
    85     runTests();
    86   };
    87   xhr.onerror = function onerror() {
    88     ok(false, "Got an error event!");
    89     am.tearDown();
    90     runTests();
    91   }
    92   xhr.send();
    93 }
    95 function test2a() {
    96   am.addIdentity();
    98   let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
    99   is(xhr.mozAnon, true, "test2: .mozAnon == true");
   100   xhr.open("GET", TEST_URL + "?expectAuth=true", true,
   101            "user1", "pass2word");
   102   xhr.onload = function onload() {
   103     is(xhr.status, 200, "test2: " + xhr.responseText);
   104     let response = JSON.parse(xhr.responseText);
   105     is(response.authorization, "Basic dXNlcjE6cGFzczJ3b3Jk");
   106     am.tearDown();
   107     runTests();
   108   };
   109   xhr.onerror = function onerror() {
   110     ok(false, "Got an error event!");
   111     am.tearDown();
   112     runTests();
   113   }
   114   xhr.send();
   115 }
   117 function test3() {
   118   am.addIdentity();
   120   let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
   121   is(xhr.mozAnon, true, "test3: .mozAnon == true");
   122   xhr.open("GET", TEST_URL + "?expectAuth=true", true);
   123   xhr.onload = function onload() {
   124     is(xhr.status, 401, "test3: " + xhr.responseText);
   125     am.tearDown();
   126     runTests();
   127   };
   128   xhr.onerror = function onerror() {
   129     ok(false, "Got an error event!");
   130     am.tearDown();
   131     runTests();
   132   }
   133   xhr.send();
   134 }
   136 function test4() {
   137   let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
   138   is(xhr.mozAnon, true, "test4: .mozAnon == true");
   139   xhr.open("GET", TEST_URL + "?expectAuth=true", true);
   140   xhr.onload = function onload() {
   141     is(xhr.status, 401, "test4: " + xhr.responseText);
   142     runTests();
   143   };
   144   xhr.onerror = function onerror() {
   145     ok(false, "Got an error event!");
   146     runTests();
   147   }
   148   xhr.send();
   149 }
   151 function test5() {
   152   let xhr = new XMLHttpRequest({mozAnon: true, mozSystem: true});
   153   is(xhr.mozAnon, true, "test5: .mozAnon == true");
   154   xhr.open("GET", TEST_URL + "?expectAuth=true", true,
   155            "user2name", "pass2word");
   156   xhr.onload = function onload() {
   157     is(xhr.status, 200, "test5: " + xhr.responseText);
   158     let response = JSON.parse(xhr.responseText);
   159     is(response.authorization, "Basic dXNlcjJuYW1lOnBhc3Myd29yZA==");
   160     runTests();
   161   };
   162   xhr.onerror = function onerror() {
   163     ok(false, "Got an error event!");
   164     runTests();
   165   }
   166   xhr.send();
   167 }
   169 function setup() {
   170   am.init();
   171   SimpleTest.waitForExplicitFinish();
   172   SpecialPowers.pushPermissions([{'type': 'systemXHR', 'allow': true, 'context': document}], runTests);
   173 }
   174 </script>
   175 </pre>
   176 </body>
   177 </html>

mercurial