Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(799)

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. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« 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..2b3f3a7af4d0b9247eac3144cc49093f4c3e315d
--- /dev/null
+++ b/LayoutTests/http/tests/serviceworker/resources/fetch-cache-override-worker.js
@@ -0,0 +1,197 @@
+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';
+ 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,
+ 'When If-Modified-Since is overridden, the response status must ' +
+ 'be 304.');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, '',
+ 'When If-Modified-Since is overridden, the response 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,
+ 'When If-Modified-Since is overridden, the modified response ' +
+ 'status must be 200.');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText,
+ 'When If-Modified-Since is overridden, the modified response body' +
+ ' must be correct.');
+
+ return fetch(url,
+ { headers: [['If-Unmodified-Since', lastModified]] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 200,
+ 'When If-Unmodified-Since is overridden, the modified response ' +
+ 'status must be 200.');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText,
+ 'When If-Unmodified-Since is overridden, the modified 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,
+ 'When If-Unmodified is overridden, the modified response status ' +
+ 'must be 412.');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, '',
+ 'When If-Unmodified is overridden, the modified response body ' +
+ 'must be empty.');
+
+ return fetch(url,
+ { headers: [['If-Match', eTag]] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 200,
+ 'When If-Match is overridden, the response status must be 200.');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText,
+ 'When If-Match is overridden, the response body must be correct.');
+
+ return fetch(url,
+ { headers: [['If-Match', 'xyzzy']] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 412,
+ 'When If-Match is overridden to the invalid tag, the response ' +
+ 'status must be 412.');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, '',
+ 'When If-Match is overridden to the invalid tag, the response ' +
+ 'body must be empty.');
+
+ return fetch(url,
+ { headers: [['If-None-Match', eTag]] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 304,
+ 'When If-None-Match is overridden, the response status must be ' +
+ '304.');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, '',
+ 'When If-None-Match is overridden, the response body must be ' +
+ 'empty.');
+
+ return fetch(url,
+ { headers: [['If-None-Match', 'xyzzy']] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 200,
+ 'When If-None-Match is overridden to the invalid tag, the ' +
+ 'response status must be 200.');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText,
+ 'When If-None-Match is overridden to the invalid tag, the ' +
+ 'response body must be correct.');
+
+ return fetch(url,
+ { headers: [['If-Range', eTag],
+ ['Range', 'bytes=10-30']] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 206,
+ 'When If-Range is overridden, the response status must be 206.');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText.substring(10, 31),
+ 'When If-Range is overridden, the response body must be correct.');
+
+ return fetch(url,
+ { headers: [['If-Range', 'xyzzy'],
+ ['Range', 'bytes=10-30']] });
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 200,
+ 'When If-Range is overridden to the invalid tag, the response ' +
+ 'status must be 200.');
+ return res.text();
+ })
+ .then(function(text) {
+ assert_equals(
+ text, expectedText,
+ 'When If-Range is overridden to the invalid tag, the response ' +
+ 'body must be correct.');
+
+ return fetch('fetch-status.php?status=304');
+ })
+ .then(function(res) {
+ assert_equals(
+ res.status, 304 ,
+ 'When the server returns 304 and there\'s a cache miss, the ' +
+ 'response status must be 304.');
+ })
+ }, '304 handling for fetch().');
« 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
This is Rietveld 408576698