blob: 1f127a6dc3928ff63afabd8cf90387b2a06d3132 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../resources/inspector-test.js"></script>
<script>
function createFetchForPHP200() {
fetch("resources/fetch-cachable.py", { headers: { 'X-Status-Code-Needed': '200' } });
}
function createFetchForPHP304() {
fetch("resources/fetch-cachable.py", { headers: { 'X-Status-Code-Needed': '304' } });
}
function createFetchForFile200() {
fetch("resources/fetch-cachable.txt");
}
function createFetchForFile304() {
fetch("resources/fetch-cachable.txt", { headers: { 'If-Modified-Since': new Date().toUTCString() } });
}
function test()
{
let suite = InspectorTest.createAsyncSuite("Network.getResponseBody.Fetch304");
function addTestCase({name, description, setup, expression, contentHandler}) {
suite.addTestCase({
name,
description,
setup,
test(resolve, reject) {
InspectorTest.evaluateInPage(expression);
WI.Frame.awaitEvent(WI.Frame.Event.ResourceWasAdded)
.then((event) => {
let resource = event.data.resource;
InspectorTest.expectEqual(resource.type, WI.Resource.Type.Fetch, "Resource should be Fetch type.");
return resource.requestContent();
})
.then(contentHandler)
.then(resolve, reject);
}
});
}
addTestCase({
name: "Network.getResponseBody.Fetch304.PHP304NotCached",
description: "Try and get cached body for 304 response, which will not exist.",
async setup() {
return InspectorTest.evaluateInPage(`internals.clearMemoryCache()`);
},
expression: `createFetchForPHP304()`,
contentHandler({error, sourceCode, content, rawBase64Encoded}) {
InspectorTest.expectEqual(sourceCode.mimeType, "", "MIME type should be empty.");
InspectorTest.expectEqual(sourceCode.statusCode, 304, "Status code should be 304.");
InspectorTest.expectEqual(sourceCode.responseSource, WI.Resource.ResponseSource.Network, "responseSource should be WI.Resource.ResponseSource.Network");
InspectorTest.expectEqual(content, undefined, "Text content should be undefined.");
}
});
addTestCase({
name: "Network.getResponseBody.Fetch304.PHP200NotCached",
description: "Get body for 200 response from network.",
expression: `createFetchForPHP200()`,
contentHandler({error, sourceCode, content, rawBase64Encoded}) {
InspectorTest.expectEqual(sourceCode.responseHeaders["Cache-Control"], "public, max-age=31556926", "Should see caching header.");
InspectorTest.expectEqual(sourceCode.mimeType, "text/plain", "MIME type should be 'text/plain'.");
InspectorTest.expectEqual(sourceCode.statusCode, 200, "Status code should be 200.");
InspectorTest.expectEqual(sourceCode.responseSource, WI.Resource.ResponseSource.Network, "responseSource should be WI.Resource.ResponseSource.Network");
InspectorTest.expectEqual(content, "Plain text resource.", "Text content should be 'Plain text resource.'.");
}
});
addTestCase({
name: "Network.getResponseBody.Fetch304.PHP200Cached",
description: "Get body for 200 response from cache.",
expression: `createFetchForPHP200()`,
contentHandler({error, sourceCode, content, rawBase64Encoded}) {
InspectorTest.expectEqual(sourceCode.mimeType, "text/plain", "MIME type should be 'text/plain'.");
InspectorTest.expectEqual(sourceCode.statusCode, 200, "Status code should be 200.");
InspectorTest.expectEqual(sourceCode.responseSource, WI.Resource.ResponseSource.DiskCache, "responseSource should be WI.Resource.ResponseSource.DiskCache");
InspectorTest.expectEqual(content, "Plain text resource.", "Text content should be 'Plain text resource.'.");
}
});
addTestCase({
name: "Network.getResponseBody.Fetch304.PHP304Cached",
description: "Get cached body for 304 response.",
expression: `createFetchForPHP304()`,
contentHandler({error, sourceCode, content, rawBase64Encoded}) {
InspectorTest.expectEqual(sourceCode.mimeType, "text/plain", "MIME type should be 'text/plain'.");
InspectorTest.expectEqual(sourceCode.statusCode, 200, "Status code should be 200.");
InspectorTest.expectEqual(sourceCode.responseSource, WI.Resource.ResponseSource.DiskCache, "responseSource should be WI.Resource.ResponseSource.DiskCache");
InspectorTest.expectEqual(content, "Plain text resource.", "Text content should be 'Plain text resource.'.");
}
});
addTestCase({
name: "Network.getResponseBody.Fetch304.File304NotCached",
description: "Try and get cached body for 304 response, which will not exist.",
async setup() {
return InspectorTest.evaluateInPage(`internals.clearMemoryCache()`);
},
expression: `createFetchForFile304()`,
contentHandler({error, sourceCode, content, rawBase64Encoded}) {
InspectorTest.expectEqual(sourceCode.mimeType, "", "MIME type should be empty.");
InspectorTest.expectEqual(sourceCode.statusCode, 304, "Status code should be 304.");
InspectorTest.expectEqual(sourceCode.responseSource, WI.Resource.ResponseSource.Network, "responseSource should be WI.Resource.ResponseSource.Network");
InspectorTest.expectEqual(content, undefined, "Text content should be undefined.");
}
});
addTestCase({
name: "Network.getResponseBody.Fetch304.File200NotCached",
description: "Get body for 200 response from network.",
expression: `createFetchForFile200()`,
contentHandler({error, sourceCode, content, rawBase64Encoded}) {
InspectorTest.expectEqual(sourceCode.responseHeaders["Cache-Control"], "public, max-age=31556926", "Should see caching header.");
InspectorTest.expectEqual(sourceCode.mimeType, "text/plain", "MIME type should be 'text/plain'.");
InspectorTest.expectEqual(sourceCode.statusCode, 200, "Status code should be 200.");
InspectorTest.expectEqual(sourceCode.responseSource, WI.Resource.ResponseSource.Network, "responseSource should be WI.Resource.ResponseSource.Network");
InspectorTest.expectEqual(content, "Plain text resource.", "Text content should be 'Plain text resource.'.");
}
});
addTestCase({
name: "Network.getResponseBody.Fetch304.File200Cached",
description: "Get body for 200 response from cache.",
expression: `createFetchForFile200()`,
contentHandler({error, sourceCode, content, rawBase64Encoded}) {
InspectorTest.expectEqual(sourceCode.mimeType, "text/plain", "MIME type should be 'text/plain'.");
InspectorTest.expectEqual(sourceCode.statusCode, 200, "Status code should be 200.");
InspectorTest.expectEqual(sourceCode.responseSource, WI.Resource.ResponseSource.DiskCache, "responseSource should be WI.Resource.ResponseSource.DiskCache");
InspectorTest.expectEqual(content, "Plain text resource.", "Text content should be 'Plain text resource.'.");
}
});
addTestCase({
name: "Network.getResponseBody.Fetch304.File304Cached",
description: "Get cached body for 304 response.",
expression: `createFetchForFile304()`,
contentHandler({error, sourceCode, content, rawBase64Encoded}) {
InspectorTest.expectEqual(sourceCode.mimeType, "text/plain", "MIME type should be 'text/plain'.");
InspectorTest.expectEqual(sourceCode.statusCode, 200, "Status code should be 200.");
InspectorTest.expectEqual(sourceCode.responseSource, WI.Resource.ResponseSource.DiskCache, "responseSource should be WI.Resource.ResponseSource.DiskCache");
InspectorTest.expectEqual(content, "Plain text resource.", "Text content should be 'Plain text resource.'.");
}
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Tests for getting the content of Fetch requests with the "304 Not Modified" response status.</p>
</body>
</html>