<!doctype html>
<html>
  <head>
    <title>XMLHttpRequest: send() - "Basic" authenticated requests with user name and password passed to open() in first request, without in second</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/common/utils.js"></script>
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-open()-method" data-tested-assertations="following::ol[1]/li[9]/ol[1]/li[1] following::ol[1]/li[9]/ol[1]/li[2]" />
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-send()-method" data-tested-assertations="following::code[contains(@title,'http-authorization')]/.." />
  </head>
  <body>
    <div id="log"></div>
    <script>
      test(function() {
        var client = new XMLHttpRequest(),
          urlstart = location.host + location.pathname.replace(/\/[^\/]*$/, '/'),
          user = token()
        client.open("GET", location.protocol+'//'+urlstart + "resources/auth1/auth.py", false, user, 'pass')
        client.setRequestHeader("x-user", user)
        client.send(null)
        // Repeat request but *without* credentials in the open() call.
        // Is the UA supposed to cache credentials from above request and use them? Yes.
        client.open("GET", location.protocol+'//'+urlstart + "resources/auth1/auth.py", false)
        client.setRequestHeader("x-user", user)
        client.send(null)

        assert_equals(client.responseText, user + "\n" + 'pass')
        //assert_equals(client.getResponseHeader('x-challenge'), 'DID-NOT')

      }, document.title)
    </script>
  </body>
</html>
