Commit c53af2f6 authored by Yifan Luo's avatar Yifan Luo Committed by Commit Bot

[Sanitizer API] Add wpt tests.

Bug: 1116418
Change-Id: I33bd57b176c9c603d60b83ca0e020aa5f5b4abff
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2390910
Commit-Queue: Yifan Luo <lyf@chromium.org>
Reviewed-by: default avatarDaniel Vogelheim <vogelheim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804309}
parent 9c499c22
This is a testharness.js-based test.
PASS SanitizerAPI sanitize function for string
PASS SanitizerAPI sanitize function for html fragment
PASS SanitizerAPI sanitize function for broken html
PASS SanitizerAPI sanitize function for empty object
PASS SanitizerAPI sanitize function for number
PASS SanitizerAPI sanitize function for zeros
PASS SanitizerAPI sanitize function for arithmetic
PASS SanitizerAPI sanitize function for empty string
PASS SanitizerAPI sanitize function for undefined
PASS SanitizerAPI sanitize function for null
PASS SanitizerAPI sanitize function for document
PASS SanitizerAPI sanitize function for html without close tag
FAIL SanitizerAPI sanitize function for scripts assert_equals: expected "" but got "<script>alert('i am a test')</script>"
FAIL SanitizerAPI sanitize function for onclick scripts assert_equals: expected "<p>Click.</p>" but got "<p onclick=\"a= 123\">Click.</p>"
Harness: the test ran to completion.
......@@ -3,7 +3,7 @@
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/helper.sub.js"></script>
<script src="support/testcases.sub.js"></script>
</head>
<body>
......@@ -13,29 +13,13 @@
d.appendChild(fragment);
return d.innerHTML;
}
s = new Sanitizer();
const s = new Sanitizer();
test(t => {
assert_equals(s.sanitizeToString("test"), "test");
}, "SanitizerAPI exists!");
test(t => {
fragment = s.sanitize("test");
testcases.forEach(c => test(t => {
fragment = s.sanitize(c.value);
assert_equals("[object DocumentFragment]", fragment.toString());
assert_equals(getString(fragment), "test");
}, "SanitizerAPI sanitizeToFragment works!");
test(t => {
fragment = s.sanitize("<b>bla</b>");
assert_equals(fragment.toString(), "[object DocumentFragment]");
assert_equals(getString(fragment), "<b>bla</b>");
}, "SanitizerAPI sanitizeToFragment with HTML codes works!");
test(t => {
fragment = s.sanitize("<a<embla");
assert_equals(fragment.toString(), "[object DocumentFragment]");
assert_equals(getString(fragment), "");
}, "SanitizerAPI sanitizeToFragment with broken HTML codes works!");
assert_equals(getString(fragment), c.result);
}, "SanitizerAPI sanitize function for " + c.message));
</script>
</body>
</html>
This is a testharness.js-based test.
PASS SanitizerAPI sanitizeToString function for string
PASS SanitizerAPI sanitizeToString function for html fragment
PASS SanitizerAPI sanitizeToString function for broken html
PASS SanitizerAPI sanitizeToString function for empty object
PASS SanitizerAPI sanitizeToString function for number
PASS SanitizerAPI sanitizeToString function for zeros
PASS SanitizerAPI sanitizeToString function for arithmetic
PASS SanitizerAPI sanitizeToString function for empty string
PASS SanitizerAPI sanitizeToString function for undefined
PASS SanitizerAPI sanitizeToString function for null
PASS SanitizerAPI sanitizeToString function for document
PASS SanitizerAPI sanitizeToString function for html without close tag
FAIL SanitizerAPI sanitizeToString function for scripts assert_equals: expected "" but got "<script>alert('i am a test')</script>"
FAIL SanitizerAPI sanitizeToString function for onclick scripts assert_equals: expected "<p>Click.</p>" but got "<p onclick=\"a= 123\">Click.</p>"
Harness: the test ran to completion.
<!DOCTYPE html>
<html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/testcases.sub.js"></script>
</head>
<body>
<script>
const s = new Sanitizer();
testcases.forEach(c => test(t => {
assert_equals(s.sanitizeToString(c.value), c.result);
}, "SanitizerAPI sanitizeToString function for " + c.message));
</script>
</body>
</html>
const testcases = [
{value: "test", result: "test", message: "string"},
{value: "<b>bla</b>", result: "<b>bla</b>", message: "html fragment"},
{value: "<a<embla", result: "", message: "broken html"},
{value: {}, result: "[object Object]", message: "empty object"},
{value: 1, result: "1", message: "number"},
{value: 000, result: "0", message: "zeros"},
{value: 1+2, result: "3", message: "arithmetic"},
{value: "", result: "", message: "empty string"},
{value: undefined, result: "undefined", message: "undefined"},
{value: null, result: "null", message: "null"},
{value: "<html><head></head><body>test</body></html>", result: "test", message: "document"},
{value: "<div>test", result: "<div>test</div>", message: "html without close tag"},
{value: "<script>alert('i am a test')<\/script>", result: "", message: "scripts"},
{value: "<p onclick='a= 123'>Click.</p>", result: "<p>Click.</p>", message: "onclick scripts"}
];
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment