| // The SanityChecker is used in debug mode to identify problems with the |
| // structure of the testsuite. In release mode it is mocked out to do nothing. |
| |
| function SanityChecker() {} |
| |
| SanityChecker.prototype.checkScenario = function(scenario) { |
| // Check if scenario is valid. |
| // TODO(kristijanburnik): Move to a sanity-checks.js for debug mode only. |
| test(function() { |
| |
| // We extend the exsiting test_expansion_schema not to kill performance by |
| // copying. |
| var expectedFields = SPEC_JSON["test_expansion_schema"]; |
| expectedFields["referrer_policy"] = SPEC_JSON["referrer_policy_schema"]; |
| |
| assert_own_property(scenario, "subresource_path", |
| "Scenario has the path to the subresource."); |
| |
| for (var field in expectedFields) { |
| assert_own_property(scenario, field, |
| "The scenario contains field " + field) |
| assert_in_array(scenario[field], expectedFields[field], |
| "Scenario's " + field + " is one of: " + |
| expectedFields[field].join(", ")) + "." |
| } |
| |
| // Check if the protocol is matched. |
| assert_equals(scenario["source_protocol"] + ":", location.protocol, |
| "Protocol of the test page should match the scenario.") |
| |
| }, "[ReferrerPolicyTestCase] The test scenario is valid."); |
| } |
| |
| SanityChecker.prototype.checkSubresourceResult = function(test, |
| scenario, |
| subresourceUrl, |
| result) { |
| test.step(function() { |
| assert_equals(Object.keys(result).length, 3); |
| assert_own_property(result, "location"); |
| assert_own_property(result, "referrer"); |
| assert_own_property(result, "headers"); |
| |
| // Skip location check for scripts. |
| if (scenario.subresource == "script-tag") |
| return; |
| |
| // Sanity check: location of sub-resource matches reported location. |
| assert_equals(result.location, subresourceUrl, |
| "Subresource reported location."); |
| }, "Running a valid test scenario."); |
| }; |