70 lines
2.4 KiB
HTML
70 lines
2.4 KiB
HTML
<!DOCTYPE html>
|
|
<head>
|
|
<title>Testcases from the previous Sanitizer API</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="support/html5lib-testcase-support.js"></script>
|
|
<script>
|
|
|
|
// Testcases from the old(er) support/testcases.sub.js file, ported over to
|
|
// the HTML5Lib testcase format.
|
|
promise_test(_ => {
|
|
return html5lib_testcases_from_response(fetch("sethtml-tree-construction.sub.dat")).
|
|
then(testcases => {
|
|
testcases.forEach((testcase, index) => {
|
|
test(_ => {
|
|
const div = document.createElement("div");
|
|
let config = undefined;
|
|
try {
|
|
config = JSON.parse(testcase.config);
|
|
} catch { }
|
|
try {
|
|
div.setHTML(testcase.data, { sanitizer: config });
|
|
} catch (error) {
|
|
assert_equals(
|
|
error.name, testcase.error,
|
|
`Expect exception ${testcase.error}, but got ${error}.`);
|
|
return; // Early return in order to not trigger the subsequent
|
|
// assertions.
|
|
}
|
|
assert_false(
|
|
!!testcase.error,
|
|
`Expect exception ${testcase.error}, but nothing was thrown.`);
|
|
assert_testcase(div, testcase);
|
|
}, `Testcase #${index}, "${testcase.data}", config: "${testcase.config}".`);
|
|
});
|
|
});
|
|
}, "wrapper");
|
|
|
|
// support/testcases.sub.js contained a few testcases with non-strings as
|
|
// input. The html5lib format doesn't support that, so we'll just add them here:
|
|
test(_ => {
|
|
const div = document.createElement("div");
|
|
div.setHTML({});
|
|
assert_equals(div.outerHTML, "<div>[object Object]</div>");
|
|
}, "Non-string input: empty object.");
|
|
test(_ => {
|
|
const div = document.createElement("div");
|
|
div.setHTML(1);
|
|
assert_equals(div.outerHTML, "<div>1</div>");
|
|
}, "Non-string input: number.");
|
|
test(_ => {
|
|
const div = document.createElement("div");
|
|
div.setHTML(000);
|
|
assert_equals(div.outerHTML, "<div>0</div>");
|
|
}, "Non-string input: octal number.");
|
|
test(_ => {
|
|
const div = document.createElement("div");
|
|
div.setHTML(1 + 2);
|
|
assert_equals(div.outerHTML, "<div>3</div>");
|
|
}, "Non-string input: expression.");
|
|
test(_ => {
|
|
const div = document.createElement("div");
|
|
div.setHTML(undefined);
|
|
assert_equals(div.outerHTML, "<div>undefined</div>");
|
|
}, "Non-string input: undefined.");
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
</body>
|