send-authentication-competing-names-passwords.htm (2404B)
1 <!doctype html> 2 <html> 3 <head> 4 <title>XMLHttpRequest: send() - "Basic" authenticated requests with competing user name/password options</title> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="/common/utils.js"></script> 8 </head> 9 <body> 10 <div id="log"></div> 11 <script> 12 function request(user1, pass1, user2, pass2, name) { 13 test(function() { 14 const client = new XMLHttpRequest(), 15 userwin = user2 || user1, 16 passwin = pass2 || pass1; 17 let urlstart = ""; 18 if (user1 || pass1) { 19 urlstart = "http://"; 20 if (user1) { 21 urlstart += user1; 22 } 23 if (pass1) { 24 urlstart += ":" + pass1; 25 } 26 urlstart += "@" + location.host + location.pathname.replace(/\/[^\/]*$/, '/'); 27 } 28 client.open("GET", urlstart + "resources/authentication.py", false, user2, pass2); 29 client.setRequestHeader("x-user", userwin); 30 client.send(null); 31 assert_equals(client.responseText, ((userwin||'') + "\n" + (passwin||'')), 'responseText should contain the right user and password'); 32 }, "XMLHttpRequest user/pass options: " + name); 33 } 34 // Cannot have just a password 35 request(null, null, token(), null, "user in open()"); 36 request(null, null, token(), token(), "user/pass in open()"); 37 request(null, null, token(), token(), "another user/pass in open(); must override cached credentials from previous test"); 38 request(null, token(), token(), null, "pass in URL, user in open()"); 39 request(null, token(), token(), token(), "pass in URL, user/pass in open()"); 40 request(token(), null, null, null, "user in URL"); 41 request(token(), null, null, token(), "user in URL, pass in open()"); 42 request(token(), token(), null, null, "user/pass in URL"); 43 request(token(), null, token(), null, "user in URL and open()"); 44 request(token(), null, token(), token(), "user in URL; user/pass in open()"); 45 request(token(), token(), token(), null, "user/pass in URL; user in open()"); 46 request(token(), token(), null, token(), "user/pass in URL; pass in open()"); 47 request(token(), token(), token(), token(), "user/pass in URL and open()"); 48 </script> 49 </body> 50 </html>