Chromium Code Reviews

Unified Diff: LayoutTests/http/tests/serviceworker/resources/fetch-cache-override-worker.js

Issue 580023002: [Fetch API] Add tests of 304 handling for fetch() (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
« no previous file with comments | « LayoutTests/http/tests/serviceworker/fetch-cache-override.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: LayoutTests/http/tests/serviceworker/resources/fetch-cache-override-worker.js
diff --git a/LayoutTests/http/tests/serviceworker/resources/fetch-cache-override-worker.js b/LayoutTests/http/tests/serviceworker/resources/fetch-cache-override-worker.js
new file mode 100644
index 0000000000000000000000000000000000000000..c37723047f23046fb6a727f38323ac2327771019
--- /dev/null
+++ b/LayoutTests/http/tests/serviceworker/resources/fetch-cache-override-worker.js
@@ -0,0 +1,169 @@
+importScripts('worker-test-harness.js');
+importScripts('test-helpers.js');
+
+promise_test(function() {
+ var lastModified = '';
+ var eTag = '';
+ var url = 'other.html';
+ var expectedText = '<!DOCTYPE html>\n<title>Other</title>\n' +
+ 'Here\'s an other html file.\n';
nhiroki 2014/09/18 10:39:32 +4-space indent?
horo 2014/09/19 05:06:12 Done.
+ return fetch(url)
+ .then(function(res) {
+ lastModified = res.headers.get('last-modified');
+ eTag = res.headers.get('etag');
+ assert_not_equals(lastModified, '', 'last-modified must be set.');
+ assert_not_equals(eTag, '', 'eTag must be set.');
+
+ return fetch(url);
+ })
+ .then(function(res) {
+ assert_equals(res.status, 200,
+ 'Automatically cached response status must be 200');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText,
+ 'Automatically cached response body must be correct.');
+
+ return fetch(url,
+ { headers: [['If-Modified-Since', lastModified]] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 304,
+ 'If-Modified-Since override response status must be 304');
nhiroki 2014/09/18 10:39:32 (suggestion) 'Status of the request overridden wit
horo 2014/09/19 05:06:12 refined
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, '',
+ 'If-Modified-Since override modified body must be empty');
+
+ return fetch(url,
+ { headers: [['If-Modified-Since',
+ 'Tue, 01 Jan 1980 01:00:00 GMT']] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 200,
+ 'If-Modified-Since override modified response status must be 200');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText,
+ 'If-Modified-Since override modified body must be correct');
+
+ return fetch(url,
+ { headers: [['If-Unmodified-Since', lastModified]] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 200,
+ 'If-Unmodified-Since override response status must be 200');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText,
+ 'If-Unmodified-Since override response body must be correct');
+
+ return fetch(url,
+ { headers: [['If-Unmodified-Since',
+ 'Tue, 01 Jan 1980 01:00:00 GMT']] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 412,
+ 'If-Unmodified-Since override modified response status must be ' +
+ '412');
nhiroki 2014/09/18 10:39:32 +4-space indent?
horo 2014/09/19 05:06:12 Done.
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, '',
+ 'If-Unmodified-Since override modified response body must be ' +
+ 'empty');
nhiroki 2014/09/18 10:39:32 ditto.
horo 2014/09/19 05:06:13 Done.
+
+ return fetch(url,
+ { headers: [['If-Match', eTag]] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 200,
+ 'If-Match override response status must be 200');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText,
+ 'If-Match override response body must be correct');
+
+ return fetch(url,
+ { headers: [['If-Match', 'xyzzy']] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 412,
+ 'If-Match override none match response status must be 412');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, '',
+ 'If-Match override none match response body must be empty');
+
+ return fetch(url,
+ { headers: [['If-None-Match', eTag]] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 304,
+ 'If-None-Match override response status must be 304');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, '', 'If-None-Match override response body must be empty');
+
+ return fetch(url,
+ { headers: [['If-None-Match', 'xyzzy']] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 200,
+ 'If-None-Match override none match response status must be 200');
+
+ return fetch(url,
+ { headers: [['If-Range', eTag],
+ ['Range', 'bytes=10-30']] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 206,
+ 'If-Range override response status must be 206');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText.substring(10, 31),
+ 'If-Range override cached response body must be correct.');
+
+ return fetch(url,
+ { headers: [['If-Range', 'xyzzy'],
+ ['Range', 'bytes=10-30']] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 200,
+ 'If-Range override none match response status must be 200');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText,
+ 'If-Range override none match response body must be correct.');
+ })
+ }, '304 handling for fetch().');
+
nhiroki 2014/09/18 10:39:32 nit: There is an empty line.
horo 2014/09/19 05:06:12 Done.
« no previous file with comments | « LayoutTests/http/tests/serviceworker/fetch-cache-override.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine