Reviewed by Darin Adler.
[WebKit-https.git] / LayoutTests / http / tests / xmlhttprequest / failed-auth.html
1 <p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=13075">bug 13075</a>:
2 XMLHttpRequest with failed authentication should set status to 401.</p>
3 <ol>
4   <li>Sync, no credentials:
5   <li>Sync, incorrect credentials:
6   <li>Async, no credentials: 
7   <li>Async, incorrect credentials: 
8 </ol>
9 <script>
10 function checkResult(n, code) {
11     document.getElementsByTagName("li")[n - 1].firstChild.nodeValue += 
12         ((code == 401) ? " OK" : (" " + code + " != 401"));
13 }
14
15 function log(n, message) {
16     document.getElementsByTagName("li")[n - 1].firstChild.nodeValue += 
17         " " + message;
18 }
19
20
21 if (window.layoutTestController) {
22     layoutTestController.dumpAsText();
23     layoutTestController.waitUntilDone();
24 } else {
25     alert("Please cancel all authentication dialogs that will appear");
26 }
27
28 try {
29     var r = new XMLHttpRequest();
30     r.open("GET", "resources/basic-auth/basic-auth.php?uid=login1", false);
31     r.send();
32     checkResult(1, r.status);
33 } catch (ex) {
34     log(1, ex);
35 }
36
37 try {
38     var r = new XMLHttpRequest();
39     r.open("GET", "resources/basic-auth/basic-auth.php?uid=login2", false, "badname", "passpw");
40     r.send();
41     checkResult(2, r.status);
42 } catch (ex) {
43     log(2, ex);
44 }
45
46 try {
47     var r = new XMLHttpRequest();
48     r.open("GET", "resources/basic-auth/basic-auth.php?uid=login3", true);
49     r.onreadystatechange = function() {
50       if (r.readyState == 4) {
51         checkResult(3, r.status);
52         test4();
53       }
54     };
55     r.send();
56 } catch (ex) {
57     log(3, ex);
58     test4();
59 }
60
61 function test4() {
62     try {
63         var r = new XMLHttpRequest();
64         r.open("GET", "resources/basic-auth/basic-auth.php?uid=login4", true, "badname", "passpw");
65         r.onreadystatechange = function() {
66           if (r.readyState == 4) {
67             checkResult(4, r.status);
68             layoutTestController.notifyDone();
69           }
70         };
71         r.send();
72     } catch (ex) {
73         log(4, ex);
74         layoutTestController.notifyDone();
75     }
76 }
77 </script>