summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/sanitizer-api/sanitizer-names.https.html
blob: 49949927deccdb9c6b8e625de9917bcfa6abbbce (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
<!DOCTYPE html>
<html>
<head>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
  // Like assert_array_equals, but disregard element order.
  function assert_array_same(actual, expected) {
    assert_array_equals(actual.sort(), expected.sort());
  }

  // Element names:
  const elems_valid = [
    "p", "template", "span", "custom-elements", "potato",

    // Arguments will be stringified, so anything that stringifies to a valid
    // name is also valid. (E.g. null => "null")
    null, undefined, 123
  ];
  const elems_invalid = [
    "", [], ["*"], ["p"]
  ];

  // Attribute names:
  const attrs_valid = [
    "href", "span",
  ];
  const attrs_invalid = [
  ];

  const all_elems = elems_valid.concat(elems_invalid);
  const all_attrs = attrs_valid.concat(attrs_invalid);
  for (const item of ["allowElements", "dropElements", "blockElements"]) {
    test(t => {
      const sanitizer = new Sanitizer({[item]: all_elems});
      assert_array_same(sanitizer.getConfiguration()[item],
                          elems_valid.map(x => "" + x));
    }, `Element names in config item: ${item}`);
  }
  for (const item of ["allowAttributes", "dropAttributes"]) {
    test(t => {
      const sanitizer = new Sanitizer(
          {[item]: Object.fromEntries(all_attrs.map(x => [x, ["*"]]))});
      assert_array_same(Object.keys(sanitizer.getConfiguration()[item]),
                        attrs_valid.map(x => "" + x));
    }, `Attribute names in config item: ${item}`);
  }
</script>
</body>
</html>