mirror of
https://github.com/servo/servo.git
synced 2025-06-27 02:23:41 +01:00
93 lines
2.3 KiB
JavaScript
93 lines
2.3 KiB
JavaScript
// META: global=window,worker
|
|
// META: title=HTTP Cache - Heuristic Freshness
|
|
// META: timeout=long
|
|
// META: script=/common/utils.js
|
|
// META: script=/common/get-host-info.sub.js
|
|
// META: script=http-cache.js
|
|
|
|
var tests = [
|
|
{
|
|
name: "HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present",
|
|
requests: [
|
|
{
|
|
response_status: [299, "Whatever"],
|
|
response_headers: [
|
|
["Last-Modified", (-3 * 100)],
|
|
["Cache-Control", "public"]
|
|
],
|
|
},
|
|
{
|
|
expected_type: "cached",
|
|
response_status: [299, "Whatever"]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
name: "HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present",
|
|
requests: [
|
|
{
|
|
response_status: [299, "Whatever"],
|
|
response_headers: [
|
|
["Last-Modified", (-3 * 100)]
|
|
],
|
|
},
|
|
{
|
|
expected_type: "not_cached"
|
|
}
|
|
]
|
|
}
|
|
];
|
|
|
|
function check_status(status) {
|
|
var succeed = status[0];
|
|
var code = status[1];
|
|
var phrase = status[2];
|
|
var body = status[3];
|
|
if (body === undefined) {
|
|
body = http_content(code);
|
|
}
|
|
var expected_type = "not_cached";
|
|
var desired = "does not use"
|
|
if (succeed === true) {
|
|
expected_type = "cached";
|
|
desired = "reuses";
|
|
}
|
|
tests.push(
|
|
{
|
|
name: "HTTP cache " + desired + " a " + code + " " + phrase + " response with Last-Modified based upon heuristic freshness",
|
|
requests: [
|
|
{
|
|
response_status: [code, phrase],
|
|
response_headers: [
|
|
["Last-Modified", (-3 * 100)]
|
|
],
|
|
response_body: body
|
|
},
|
|
{
|
|
expected_type: expected_type,
|
|
response_status: [code, phrase],
|
|
response_body: body
|
|
}
|
|
]
|
|
}
|
|
)
|
|
}
|
|
[
|
|
[true, 200, "OK"],
|
|
[true, 203, "Non-Authoritative Information"],
|
|
[true, 204, "No Content", ""],
|
|
[true, 404, "Not Found"],
|
|
[true, 405, "Method Not Allowed"],
|
|
[true, 410, "Gone"],
|
|
[true, 414, "URI Too Long"],
|
|
[true, 501, "Not Implemented"]
|
|
].forEach(check_status);
|
|
[
|
|
[false, 201, "Created"],
|
|
[false, 202, "Accepted"],
|
|
[false, 403, "Forbidden"],
|
|
[false, 502, "Bad Gateway"],
|
|
[false, 503, "Service Unavailable"],
|
|
[false, 504, "Gateway Timeout"],
|
|
].forEach(check_status);
|
|
run_tests(tests);
|