Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Errors
- This test failed 10 times in the preceding 30 days. quicksearch this test
- Manifest: dom/security/test/csp/mochitest.toml
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test some specialized CSP errors</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<iframe id="cspframe"></iframe>
<script class="testbody" type="text/javascript">
SimpleTest.waitForExplicitFinish();
function cleanup() {
SpecialPowers.postConsoleSentinel();
SimpleTest.finish();
};
let errors = [];
function add(name) {
ok(!errors.includes(name), `duplicate error for ${name}`);
errors.push(name);
}
SpecialPowers.registerConsoleListener(msg => {
if (!msg.errorMessage) {
return;
}
let {errorMessage} = msg;
function contains(str) {
ok(errorMessage.includes(str), `error message contains "${str}"`);
}
if (errorMessage.includes("(script-src-attr)")) {
contains("blocked an event handler");
contains("from being executed");
contains("Source: alert('onload');");
add("event handler");
} else if (errorMessage.includes("(img-src)")) {
contains("blocked the loading of a resource");
contains("/image.png");
add("image");
} else if (errorMessage.includes("an inline script")) {
contains("(script-src-elem)");
contains("from being executed");
add("inline script");
} else if (errorMessage.includes("a script")) {
contains("(script-src-elem)");
contains("from being executed");
contains("/script.js");
add("script");
} else if (errorMessage.includes("(worker-src)")) {
contains("(worker-src)");
contains("from being executed");
contains("/worker.js");
add("worker");
} else if (errorMessage.includes("a JavaScript eval")) {
contains("(script-src)");
contains("from being executed");
contains("Missing 'unsafe-eval'")
add("eval");
}
if (errors.length == 6) {
SimpleTest.executeSoon(cleanup);
}
});
document.getElementById('cspframe').src = 'file_csp_error_messages.html';
</script>
</body>
</html>