<!doctype html>
<html>
  <head>
    <title>XMLHttpRequest: send() - "Basic" authenticated CORS request using setRequestHeader() (expects to succeed)</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/common/utils.js"></script>
    <!-- These spec references do not make much sense simply because the spec doesn't say very much about this.. -->
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-setrequestheader()-method" data-tested-assertations="following::ol[1]/li[6]" />
    <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>
      var test = async_test()
      test.step(function() {
        var client = new XMLHttpRequest(),
            urlstart = location.host + location.pathname.replace(/\/[^\/]*$/, '/'),
            user = token()
        client.open("GET", location.protocol+'//www1.'+urlstart + "resources/auth2/corsenabled.py", false)
        client.withCredentials = true
        client.setRequestHeader("x-user", user)
        client.setRequestHeader("x-pass", 'pass')
        client.setRequestHeader('Authorization', 'Basic ' + btoa(user + ":pass"))
        client.onreadystatechange = function () {
          if (client.readyState < 4) {return}
          test.step( function () {
            assert_true(client.responseText == (user + '\npass'), 'responseText should contain the right user and password')
            assert_equals(client.status, 200)
            assert_equals(client.getResponseHeader('x-challenge'), 'DID-NOT')
            test.done()
          } )
        }
        client.send(null)
      })
    </script>
  </body>
</html>
