summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/XMLHttpRequest/send-content-type-charset.htm
blob: 9e93279d6ba15f196bbd4d864aebdce55a0a7f62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<!doctype html>
<html>
  <head>
    <title>XMLHttpRequest: send() - charset parameter of Content-Type</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-send()-method" data-tested-assertations="following::ol[1]/li[4]/p/code[contains(text(),'Content-Type')]/.. following::ol[1]/li[4]/p/code[contains(text(),'Content-Type')]/../following-sibling::p" />
    <link rel="help" href="https://xhr.spec.whatwg.org/#dom-XMLHttpRequest-send-a-string" data-tested-assertations="following::p[2]" />
  </head>
  <body>
    <div id="log"></div>
    <script>
      function request(input, output, title) {
        title = title || document.title + ' - ' + input;
        test(function() {
        var client = new XMLHttpRequest()
        client.open("POST", "resources/content.py", false)
        if(input)
          client.setRequestHeader("Content-Type", input)
        client.send("TEST")
        assert_equals(client.responseText, "TEST")
        assert_equals(client.getResponseHeader("x-request-content-type"), output)
        }, title)
      }

      request(
        "text; charset=ascii",
        "text; charset=ascii",
        "header with invalid MIME type is not changed"
      )
      request(
        "charset=ascii",
        "charset=ascii",
        "known charset but bogus header - missing MIME type"
      )
      request(
        "charset=bogus",
        "charset=bogus",
        "bogus charset and bogus header - missing MIME type"
      )
      request(
        "text/plain;charset=utf-8",
        "text/plain;charset=utf-8",
        "Correct text/plain MIME with charset"
      )
      request(
        "text/x-pink-unicorn",
        "text/x-pink-unicorn",
        "If no charset= param is given, implementation should not add one - unknown MIME"
      )
      request(
        "text/plain",
        "text/plain",
        "If no charset= param is given, implementation should not add one - known MIME"
      )
      request(
        "text/x-thepiano;charset= waddup",
        "text/x-thepiano;charset=UTF-8",
        "charset given but wrong, fix it (unknown MIME, bogus charset)"
      )
      request(
        "text/plain;charset=utf-8;charset=waddup",
        "text/plain;charset=utf-8;charset=UTF-8",
        "charset given but wrong, fix it (known MIME, bogus charset)"
      )
      request(
        "text/plain;charset=shift-jis",
        "text/plain;charset=UTF-8",
        "charset given but wrong, fix it (known MIME, actual charset)"
      )
      request(
        "text/x-pink-unicorn; charset=windows-1252; charset=bogus; notrelated; charset=ascii",
        "text/x-pink-unicorn; charset=UTF-8; charset=UTF-8; notrelated; charset=UTF-8",
        "If multiple charset parameters are given, all should be rewritten"
      )
      request(
        null,
        "text/plain;charset=UTF-8",
        "No content type set, give MIME and charset"
      )
    </script>
  </body>
</html>