| <!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> |