OLD | NEW |
| (Empty) |
1 if (self.importScripts) { | |
2 importScripts('/resources/testharness.js'); | |
3 importScripts('../resources/test-helpers.js'); | |
4 } | |
5 | |
6 (function() { | |
7 var next_index = 1; | |
8 | |
9 // Returns a transaction (request, response, and url) for a unique URL. | |
10 function create_unique_transaction(test) { | |
11 var uniquifier = String(next_index++); | |
12 var url = 'http://example.com/' + uniquifier; | |
13 | |
14 return { | |
15 request: new Request(url), | |
16 response: new Response('hello'), | |
17 url: url | |
18 }; | |
19 } | |
20 | |
21 self.create_unique_transaction = create_unique_transaction; | |
22 })(); | |
23 | |
24 cache_test(function(cache) { | |
25 var transaction = create_unique_transaction(); | |
26 | |
27 return cache.put(transaction.request.clone(), transaction.response.clone()) | |
28 .then(function() { | |
29 return self.caches.match(transaction.request); | |
30 }) | |
31 .then(function(response) { | |
32 assert_response_equals(response, transaction.response, | |
33 'The response should not have changed.'); | |
34 }); | |
35 }, 'CacheStorageMatch with no cache name provided'); | |
36 | |
37 cache_test(function(cache) { | |
38 var transaction = create_unique_transaction(); | |
39 | |
40 var test_cache_list = ['a', 'b', 'c']; | |
41 return cache.put(transaction.request.clone(), transaction.response.clone()) | |
42 .then(function() { | |
43 return Promise.all(test_cache_list.map(function(key) { | |
44 return self.caches.open(key); | |
45 })); | |
46 }) | |
47 .then(function() { | |
48 return self.caches.match(transaction.request); | |
49 }) | |
50 .then(function(response) { | |
51 assert_response_equals(response, transaction.response, | |
52 'The response should not have changed.'); | |
53 }); | |
54 }, 'CacheStorageMatch from one of many caches'); | |
55 | |
56 promise_test(function(test) { | |
57 var transaction = create_unique_transaction(); | |
58 | |
59 var test_cache_list = ['x', 'y', 'z']; | |
60 return Promise.all(test_cache_list.map(function(key) { | |
61 return self.caches.open(key); | |
62 })) | |
63 .then(function() { return self.caches.open('x'); }) | |
64 .then(function(cache) { | |
65 return cache.put(transaction.request.clone(), | |
66 transaction.response.clone()); | |
67 }) | |
68 .then(function() { | |
69 return self.caches.match(transaction.request, {cacheName: 'x'}); | |
70 }) | |
71 .then(function(response) { | |
72 assert_response_equals(response, transaction.response, | |
73 'The response should not have changed.'); | |
74 }) | |
75 .then(function() { | |
76 return self.caches.match(transaction.request, {cacheName: 'y'}); | |
77 }) | |
78 .then(function(response) { | |
79 assert_equals(response, undefined, | |
80 'Cache y should not have a response for the request.'); | |
81 }); | |
82 }, 'CacheStorageMatch from one of many caches by name'); | |
83 | |
84 cache_test(function(cache) { | |
85 var transaction = create_unique_transaction(); | |
86 return cache.put(transaction.url, transaction.response.clone()) | |
87 .then(function() { | |
88 return self.caches.match(transaction.request); | |
89 }) | |
90 .then(function(response) { | |
91 assert_response_equals(response, transaction.response, | |
92 'The response should not have changed.'); | |
93 }); | |
94 }, 'CacheStorageMatch a string request'); | |
95 | |
96 cache_test(function(cache) { | |
97 var transaction = create_unique_transaction(); | |
98 return cache.put(transaction.request.clone(), transaction.response.clone()) | |
99 .then(function() { | |
100 return self.caches.match(new Request(transaction.request.url, | |
101 {method: 'HEAD'})); | |
102 }) | |
103 .then(function(response) { | |
104 assert_equals(response, undefined, | |
105 'A HEAD request should not be matched'); | |
106 }); | |
107 }, 'CacheStorageMatch a HEAD request'); | |
108 | |
109 promise_test(function(test) { | |
110 var transaction = create_unique_transaction(); | |
111 return self.caches.match(transaction.request) | |
112 .then(function(response) { | |
113 assert_equals(response, undefined, | |
114 'The response should not be found.'); | |
115 }); | |
116 }, 'CacheStorageMatch with no cached entry'); | |
117 | |
118 promise_test(function(test) { | |
119 var transaction = create_unique_transaction(); | |
120 return self.caches.has('foo') | |
121 .then(function(has_foo) { | |
122 assert_false(has_foo, "The cache should not exist."); | |
123 return self.caches.match(transaction.request, {cacheName: 'foo'}); | |
124 }) | |
125 .then(function(response) { | |
126 assert_equals(response, undefined, | |
127 'The match with bad cache name should resolve to ' + | |
128 'undefined.'); | |
129 return self.caches.has('foo'); | |
130 }) | |
131 .then(function(has_foo) { | |
132 assert_false(has_foo, "The cache should still not exist."); | |
133 }); | |
134 }, 'CacheStorageMatch with no caches available but name provided'); | |
135 | |
136 cache_test(function(cache) { | |
137 var transaction = create_unique_transaction(); | |
138 | |
139 return self.caches.delete('') | |
140 .then(function() { | |
141 return self.caches.has(''); | |
142 }) | |
143 .then(function(has_cache) { | |
144 assert_false(has_cache, "The cache should not exist."); | |
145 return cache.put(transaction.request, transaction.response.clone()); | |
146 }) | |
147 .then(function() { | |
148 return self.caches.match(transaction.request, {cacheName: ''}); | |
149 }) | |
150 .then(function(response) { | |
151 assert_equals(response, undefined, | |
152 'The response should not be found.'); | |
153 return self.caches.open(''); | |
154 }) | |
155 .then(function(cache) { | |
156 return cache.put(transaction.request, transaction.response); | |
157 }) | |
158 .then(function() { | |
159 return self.caches.match(transaction.request, {cacheName: ''}); | |
160 }) | |
161 .then(function(response) { | |
162 assert_response_equals(response, transaction.response, | |
163 'The response should be matched.'); | |
164 return self.caches.delete(''); | |
165 }); | |
166 }, 'CacheStorageMatch with empty cache name provided'); | |
167 | |
168 | |
169 cache_test(function(cache) { | |
170 var request = new Request('http://example.com/?foo'); | |
171 var no_query_request = new Request('http://example.com/'); | |
172 var response = new Response('foo'); | |
173 return cache.put(request.clone(), response.clone()) | |
174 .then(function() { | |
175 return self.caches.match(no_query_request.clone()); | |
176 }) | |
177 .then(function(result) { | |
178 assert_equals( | |
179 result, undefined, | |
180 'CacheStorageMatch should resolve as undefined with a ' + | |
181 'mismatched query.'); | |
182 return self.caches.match(no_query_request.clone(), | |
183 {ignoreSearch: true}); | |
184 }) | |
185 .then(function(result) { | |
186 assert_response_equals( | |
187 result, response, | |
188 'CacheStorageMatch with ignoreSearch should ignore the ' + | |
189 'query of the request.'); | |
190 }); | |
191 }, 'CacheStorageMatch supports ignoreSearch'); | |
192 | |
193 cache_test(function(cache) { | |
194 var request = new Request('http://example.com/'); | |
195 var head_request = new Request('http://example.com/', {method: 'HEAD'}); | |
196 var response = new Response('foo'); | |
197 return cache.put(request.clone(), response.clone()) | |
198 .then(function() { | |
199 return self.caches.match(head_request.clone()); | |
200 }) | |
201 .then(function(result) { | |
202 assert_equals( | |
203 result, undefined, | |
204 'CacheStorageMatch should resolve as undefined with a ' + | |
205 'mismatched method.'); | |
206 return self.caches.match(head_request.clone(), | |
207 {ignoreMethod: true}); | |
208 }) | |
209 .then(function(result) { | |
210 assert_response_equals( | |
211 result, response, | |
212 'CacheStorageMatch with ignoreMethod should ignore the ' + | |
213 'method of request.'); | |
214 }); | |
215 }, 'Cache.match supports ignoreMethod'); | |
216 | |
217 cache_test(function(cache) { | |
218 var vary_request = new Request('http://example.com/c', | |
219 {headers: {'Cookies': 'is-for-cookie'}}); | |
220 var vary_response = new Response('', {headers: {'Vary': 'Cookies'}}); | |
221 var mismatched_vary_request = new Request('http://example.com/c'); | |
222 | |
223 return cache.put(vary_request.clone(), vary_response.clone()) | |
224 .then(function() { | |
225 return self.caches.match(mismatched_vary_request.clone()); | |
226 }) | |
227 .then(function(result) { | |
228 assert_equals( | |
229 result, undefined, | |
230 'CacheStorageMatch should resolve as undefined with a ' + | |
231 ' mismatched vary.'); | |
232 return self.caches.match(mismatched_vary_request.clone(), | |
233 {ignoreVary: true}); | |
234 }) | |
235 .then(function(result) { | |
236 assert_response_equals( | |
237 result, vary_response, | |
238 'CacheStorageMatch with ignoreVary should ignore the ' + | |
239 'vary of request.'); | |
240 }); | |
241 }, 'CacheStorageMatch supports ignoreVary'); | |
242 | |
243 done(); | |
OLD | NEW |