// 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"]; 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(scenario, subresourceUrl, result) { 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."); };