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

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/fetch/script-tests/fetch.js

Issue 2524703002: Introduce Response.redirect attribute and add LayoutTest. (Closed)
Patch Set: Created 4 years 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 unified diff | Download patch
OLDNEW
1 if (self.importScripts) { 1 if (self.importScripts) {
2 importScripts('../resources/fetch-test-helpers.js'); 2 importScripts('../resources/fetch-test-helpers.js');
3 } 3 }
4 4
5 promise_test(function(t) { 5 promise_test(function(t) {
6 return fetch('http://') 6 return fetch('http://')
7 .then( 7 .then(
8 t.unreached_func('fetch of invalid URL must fail'), 8 t.unreached_func('fetch of invalid URL must fail'),
9 function() {}); 9 function() {});
10 }, 'Fetch invalid URL'); 10 }, 'Fetch invalid URL');
(...skipping 11 matching lines...) Expand all
22 22
23 // Tests for data: scheme. 23 // Tests for data: scheme.
24 promise_test(function(t) { 24 promise_test(function(t) {
25 return fetch('data:,Foobar') 25 return fetch('data:,Foobar')
26 .then(function(response) { 26 .then(function(response) {
27 assert_equals(response.status, 200); 27 assert_equals(response.status, 200);
28 assert_equals(response.statusText, 'OK'); 28 assert_equals(response.statusText, 'OK');
29 assert_equals(response.headers.get('Content-Type'), 29 assert_equals(response.headers.get('Content-Type'),
30 'text/plain;charset=US-ASCII'); 30 'text/plain;charset=US-ASCII');
31 assert_equals(size(response.headers), 1); 31 assert_equals(size(response.headers), 1);
32 assert_false(response.redirected);
32 if (self.internals) { 33 if (self.internals) {
33 assert_array_equals( 34 assert_array_equals(
34 self.internals.getInternalResponseURLList(response), 35 self.internals.getInternalResponseURLList(response),
35 ['data:,Foobar']); 36 ['data:,Foobar']);
36 } 37 }
37 return response.text(); 38 return response.text();
38 }) 39 })
39 .then(function(text) { 40 .then(function(text) {
40 assert_equals(text, 'Foobar'); 41 assert_equals(text, 'Foobar');
41 }); 42 });
(...skipping 19 matching lines...) Expand all
61 }, 'fetch data: URL with the POST method'); 62 }, 'fetch data: URL with the POST method');
62 63
63 promise_test(function(t) { 64 promise_test(function(t) {
64 return fetch('data:text/html;charset=utf-8;base64,5paH5a2X') 65 return fetch('data:text/html;charset=utf-8;base64,5paH5a2X')
65 .then(function(response) { 66 .then(function(response) {
66 assert_equals(response.status, 200); 67 assert_equals(response.status, 200);
67 assert_equals(response.statusText, 'OK'); 68 assert_equals(response.statusText, 'OK');
68 assert_equals(response.headers.get('Content-Type'), 69 assert_equals(response.headers.get('Content-Type'),
69 'text/html;charset=utf-8'); 70 'text/html;charset=utf-8');
70 assert_equals(size(response.headers), 1); 71 assert_equals(size(response.headers), 1);
72 assert_false(response.redirected);
71 if (self.internals) { 73 if (self.internals) {
72 assert_array_equals( 74 assert_array_equals(
73 self.internals.getInternalResponseURLList(response), 75 self.internals.getInternalResponseURLList(response),
74 ['data:text/html;charset=utf-8;base64,5paH5a2X']); 76 ['data:text/html;charset=utf-8;base64,5paH5a2X']);
75 } 77 }
76 return response.text(); 78 return response.text();
77 }) 79 })
78 .then(function(text) { 80 .then(function(text) {
79 assert_equals(text, '\u6587\u5b57'); 81 assert_equals(text, '\u6587\u5b57');
80 }); 82 });
(...skipping 11 matching lines...) Expand all
92 // Tests for blob: scheme. 94 // Tests for blob: scheme.
93 promise_test(function(t) { 95 promise_test(function(t) {
94 var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'})); 96 var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'}));
95 return fetch(url) 97 return fetch(url)
96 .then(function(response) { 98 .then(function(response) {
97 assert_equals(response.status, 200); 99 assert_equals(response.status, 200);
98 assert_equals(response.statusText, 'OK'); 100 assert_equals(response.statusText, 'OK');
99 assert_equals(response.headers.get('Content-Type'), 'text/fox'); 101 assert_equals(response.headers.get('Content-Type'), 'text/fox');
100 assert_equals(response.headers.get('Content-Length'), '3'); 102 assert_equals(response.headers.get('Content-Length'), '3');
101 assert_equals(size(response.headers), 2); 103 assert_equals(size(response.headers), 2);
104 assert_false(response.redirected);
102 if (self.internals) { 105 if (self.internals) {
103 assert_array_equals( 106 assert_array_equals(
104 self.internals.getInternalResponseURLList(response), [url]); 107 self.internals.getInternalResponseURLList(response), [url]);
105 } 108 }
106 return response.text(); 109 return response.text();
107 }) 110 })
108 .then(function(text) { 111 .then(function(text) {
109 assert_equals(text, 'fox'); 112 assert_equals(text, 'fox');
110 }); 113 });
111 }, 'fetch blob: URL'); 114 }, 'fetch blob: URL');
(...skipping 17 matching lines...) Expand all
129 t.unreached_func('scheme not listed in basic fetch spec must fail'), 132 t.unreached_func('scheme not listed in basic fetch spec must fail'),
130 function() {}); 133 function() {});
131 }, 'fetch of scheme not listed in basic fetch spec'); 134 }, 'fetch of scheme not listed in basic fetch spec');
132 135
133 promise_test(function(t) { 136 promise_test(function(t) {
134 var request = new Request('/fetch/resources/fetch-status.php?status=200'); 137 var request = new Request('/fetch/resources/fetch-status.php?status=200');
135 return fetch(request) 138 return fetch(request)
136 .then(function(response) { 139 .then(function(response) {
137 assert_equals(response.status, 200); 140 assert_equals(response.status, 200);
138 assert_equals(response.statusText, 'OK'); 141 assert_equals(response.statusText, 'OK');
142 assert_false(response.redirected);
139 if (self.internals) { 143 if (self.internals) {
140 assert_array_equals( 144 assert_array_equals(
141 self.internals.getInternalResponseURLList(response), 145 self.internals.getInternalResponseURLList(response),
142 [request.url]); 146 [request.url]);
143 } 147 }
144 }); 148 });
145 }, 'Fetch result of 200 response'); 149 }, 'Fetch result of 200 response');
146 150
147 promise_test(function(t) { 151 promise_test(function(t) {
148 var request = new Request('/fetch/resources/fetch-status.php?status=404'); 152 var request = new Request('/fetch/resources/fetch-status.php?status=404');
149 return fetch(request) 153 return fetch(request)
150 .then(function(response) { 154 .then(function(response) {
151 assert_equals(response.status, 404); 155 assert_equals(response.status, 404);
152 assert_equals(response.statusText, 'Not Found'); 156 assert_equals(response.statusText, 'Not Found');
157 assert_false(response.redirected);
153 if (self.internals) { 158 if (self.internals) {
154 assert_array_equals( 159 assert_array_equals(
155 self.internals.getInternalResponseURLList(response), 160 self.internals.getInternalResponseURLList(response),
156 [request.url]); 161 [request.url]);
157 } 162 }
158 }); 163 });
159 }, 'Fetch result of 404 response'); 164 }, 'Fetch result of 404 response');
160 165
161 promise_test(function(t) { 166 promise_test(function(t) {
162 var request = new Request( 167 var request = new Request(
163 '/fetch/resources/fetch-status.php?status=200#fragment'); 168 '/fetch/resources/fetch-status.php?status=200#fragment');
164 169
165 // The url attribute's getter must return request's url, 170 // The url attribute's getter must return request's url,
166 // serialized with the exclude fragment flag set. 171 // serialized with the exclude fragment flag set.
167 assert_equals(request.url, 172 assert_equals(request.url,
168 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200'); 173 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200');
169 174
170 return fetch(request) 175 return fetch(request)
171 .then(function(response) { 176 .then(function(response) {
172 assert_equals(response.status, 200); 177 assert_equals(response.status, 200);
173 assert_equals(response.statusText, 'OK'); 178 assert_equals(response.statusText, 'OK');
174 // The url attribute's getter must return the empty string 179 // The url attribute's getter must return the empty string
175 // if response's url is null and response's url, 180 // if response's url is null and response's url,
176 // serialized with the exclude fragment flag set, otherwise. 181 // serialized with the exclude fragment flag set, otherwise.
177 assert_equals(response.url, 182 assert_equals(response.url,
178 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200'); 183 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200');
184 assert_false(response.redirected);
179 if (self.internals) { 185 if (self.internals) {
180 assert_array_equals( 186 assert_array_equals(
181 self.internals.getInternalResponseURLList(response), 187 self.internals.getInternalResponseURLList(response),
182 [BASE_ORIGIN + 188 [BASE_ORIGIN +
183 '/fetch/resources/fetch-status.php?status=200#fragment']); 189 '/fetch/resources/fetch-status.php?status=200#fragment']);
184 } 190 }
185 }); 191 });
186 }, 'Request/response url attribute getter with fragment'); 192 }, 'Request/response url attribute getter with fragment');
187 193
188 promise_test(function(t) { 194 promise_test(function(t) {
189 var redirect_target_url = 195 var redirect_target_url =
190 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200'; 196 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200';
191 var redirect_original_url = 197 var redirect_original_url =
192 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' + 198 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' +
193 redirect_target_url; 199 redirect_target_url;
194 200
195 var request = new Request(redirect_original_url); 201 var request = new Request(redirect_original_url);
196 assert_equals(request.url, redirect_original_url, 202 assert_equals(request.url, redirect_original_url,
197 'Request\'s url is the original URL'); 203 'Request\'s url is the original URL');
198 assert_equals(request.redirect, 'follow'); 204 assert_equals(request.redirect, 'follow');
199 205
200 return fetch(request) 206 return fetch(request)
201 .then(function(response) { 207 .then(function(response) {
202 assert_equals(response.status, 200); 208 assert_equals(response.status, 200);
203 assert_equals(response.statusText, 'OK'); 209 assert_equals(response.statusText, 'OK');
204 assert_equals(response.url, redirect_target_url, 210 assert_equals(response.url, redirect_target_url,
205 'Response\'s url is locationURL'); 211 'Response\'s url is locationURL');
206 assert_equals(request.url, redirect_original_url, 212 assert_equals(request.url, redirect_original_url,
207 'Request\'s url remains the original URL'); 213 'Request\'s url remains the original URL');
214 assert_true(response.redirected);
208 if (self.internals) { 215 if (self.internals) {
209 assert_array_equals( 216 assert_array_equals(
210 self.internals.getInternalResponseURLList(response), 217 self.internals.getInternalResponseURLList(response),
211 [request.url, response.url]); 218 [request.url, response.url]);
212 } 219 }
213 }); 220 });
214 }, 'Request/response url attribute getter with redirect'); 221 }, 'Request/response url attribute getter with redirect');
215 222
216 promise_test(function(t) { 223 promise_test(function(t) {
217 var redirect_target_url = 224 var redirect_target_url =
218 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200'; 225 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200';
219 var redirect_original_url = 226 var redirect_original_url =
220 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' + 227 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' +
221 redirect_target_url; 228 redirect_target_url;
222 229
223 var request = new Request(redirect_original_url, {redirect: 'manual'}); 230 var request = new Request(redirect_original_url, {redirect: 'manual'});
224 assert_equals(request.url, redirect_original_url, 231 assert_equals(request.url, redirect_original_url,
225 'Request\'s url is the original URL'); 232 'Request\'s url is the original URL');
226 assert_equals(request.redirect, 'manual'); 233 assert_equals(request.redirect, 'manual');
227 234
228 return fetch(request) 235 return fetch(request)
229 .then(function(response) { 236 .then(function(response) {
230 assert_equals(response.status, 0); 237 assert_equals(response.status, 0);
231 assert_equals(response.type, 'opaqueredirect'); 238 assert_equals(response.type, 'opaqueredirect');
232 assert_equals(response.url, request.url); 239 assert_equals(response.url, request.url);
240 assert_false(response.redirected);
233 if (self.internals) { 241 if (self.internals) {
234 assert_array_equals( 242 assert_array_equals(
235 self.internals.getInternalResponseURLList(response), 243 self.internals.getInternalResponseURLList(response),
236 [redirect_original_url]); 244 [redirect_original_url]);
237 } 245 }
238 }); 246 });
239 }, 'Manual redirect fetch returns opaque redirect response'); 247 }, 'Manual redirect fetch returns opaque redirect response');
240 248
241 promise_test(function(t) { 249 promise_test(function(t) {
242 var redirect_target_url = 250 var redirect_target_url =
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 function() {}); 286 function() {});
279 }, 'Redirect response must cause an error when redirect mode is error.'); 287 }, 'Redirect response must cause an error when redirect mode is error.');
280 288
281 promise_test(function(test) { 289 promise_test(function(test) {
282 var url = BASE_ORIGIN + '/fetch/resources/doctype.html'; 290 var url = BASE_ORIGIN + '/fetch/resources/doctype.html';
283 return fetch(new Request(url, {redirect: 'manual'})) 291 return fetch(new Request(url, {redirect: 'manual'}))
284 .then(function(response) { 292 .then(function(response) {
285 assert_equals(response.status, 200); 293 assert_equals(response.status, 200);
286 assert_equals(response.statusText, 'OK'); 294 assert_equals(response.statusText, 'OK');
287 assert_equals(response.url, url); 295 assert_equals(response.url, url);
296 assert_false(response.redirected);
288 if (self.internals) { 297 if (self.internals) {
289 assert_array_equals( 298 assert_array_equals(
290 self.internals.getInternalResponseURLList(response), [url]); 299 self.internals.getInternalResponseURLList(response), [url]);
291 } 300 }
292 return response.text(); 301 return response.text();
293 }) 302 })
294 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); }) 303 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); })
295 }, 'No-redirect fetch completes normally even if redirect mode is manual'); 304 }, 'No-redirect fetch completes normally even if redirect mode is manual');
296 305
297 promise_test(function(test) { 306 promise_test(function(test) {
298 var url = BASE_ORIGIN + '/fetch/resources/doctype.html'; 307 var url = BASE_ORIGIN + '/fetch/resources/doctype.html';
299 return fetch(new Request(url, {redirect: 'error'})) 308 return fetch(new Request(url, {redirect: 'error'}))
300 .then(function(response) { 309 .then(function(response) {
301 assert_equals(response.status, 200); 310 assert_equals(response.status, 200);
302 assert_equals(response.statusText, 'OK'); 311 assert_equals(response.statusText, 'OK');
303 assert_equals(response.url, url); 312 assert_equals(response.url, url);
313 assert_false(response.redirected);
304 if (self.internals) { 314 if (self.internals) {
305 assert_array_equals( 315 assert_array_equals(
306 self.internals.getInternalResponseURLList(response), [url]); 316 self.internals.getInternalResponseURLList(response), [url]);
307 } 317 }
308 return response.text(); 318 return response.text();
309 }) 319 })
310 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); }) 320 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); })
311 }, 'No-redirect fetch completes normally even if redirect mode is error'); 321 }, 'No-redirect fetch completes normally even if redirect mode is error');
312 322
313 function evalJsonp(text) { 323 function evalJsonp(text) {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 assert_true(req.bodyUsed); 443 assert_true(req.bodyUsed);
434 }, 'Calling fetch() disturbs body if not null'); 444 }, 'Calling fetch() disturbs body if not null');
435 445
436 test(t => { 446 test(t => {
437 var req = new Request('/', {method: 'POST'}); 447 var req = new Request('/', {method: 'POST'});
438 fetch(req); 448 fetch(req);
439 assert_false(req.bodyUsed); 449 assert_false(req.bodyUsed);
440 }, 'Calling fetch() doesn\'t disturb body if null'); 450 }, 'Calling fetch() doesn\'t disturb body if null');
441 451
442 done(); 452 done();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698