blob: bad440991ef39295a73779f4143b244f1216091f [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>Tests integrity enforcement on fetch()</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
var SRITest = function(pass, name, src, integrity, expectedValue) {
this.pass = pass;
this.name = name;
this.src = src;
this.integrity = integrity;
this.expectedValue = expectedValue;
}
SRITest.prototype.execute = function() {
var pass = this.pass;
var src = this.src;
var integrity = this.integrity;
var expectedValue = this.expectedValue;
var options = {};
if (integrity !== '') {
options.integrity = integrity;
}
promise_test(function() {
return fetch(src, options)
.then(function(response) {
assert_true(pass, "Response should resolve");
if (expectedValue) {
return response.text().then(function(actualValue) {
assert_equals(actualValue, expectedValue, "Value consumed must match hashed value.");
});
}
}, function() {
assert_false(pass, "Response should be rejected");
})
}, this.name);
}
new SRITest(true, 'No integrity', 'call-success.js', '', 'success();\n').execute();
new SRITest(true, 'Good integrity', 'call-success.js', 'sha256-B0/62fJSJFrdjEFR9ba04m/D+LHQ+zG6PGcaR0Trpxg=', 'success();\n').execute();
new SRITest(false, 'Bad integrity', 'call-success.js', 'sha256-deadbeef').execute();
new SRITest(false, 'Bad integrity and an img', '/resources/square100.png', 'sha256-B0/62fJSJFrdjEFR9ba04m/D+LHQ+zG6PGcaR0Trpxg=').execute();
new SRITest(true, 'Good integrity and an img', '/resources/square100.png', 'sha256-Ly1v7MxPoMXjm9Dwrr4mDCVUe1PAA781vd0G8xvgpj8=').execute();
</script>
</body>
</html>