<!DOCTYPE html>
<html>
  <head>
    <title>XMLHttpRequest: open() - allowed case in/sensitive methods test</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <p>Valid methods per step-5 of http://xhr.spec.whatwg.org/#the-open()-method.</p>
    <script type="text/javascript">
      function testMethod(methodName) {
        var client = new XMLHttpRequest();
        client.open(methodName, "resources/echo-request-method.py");
        client.onreadystatechange = function(event) {
          if (event.target.readyState == 4)
            assert_equals(client.getResponseHeader("x-custom-request-method"), methodName.toUpperCase());
        }
        client.send(null);
      }

      test(function() { testMethod("PUT"); });
      test(function() { testMethod("Put"); });
      test(function() { testMethod("DELETE"); });
      test(function() { testMethod("DeLeTe"); });
      test(function() { testMethod("HEAD"); });
      test(function() { testMethod("hEAd"); });
      test(function() { testMethod("OPTIONS"); });
      test(function() { testMethod("OPtiOns"); });
      test(function() { testMethod("POST"); });
      test(function() { testMethod("post"); });
      test(function() { testMethod("GET"); });
      test(function() { testMethod("gEt"); });
    </script>
  </body>
</html>

