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

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

Issue 2550363002: Add LayoutTests for URL list of Response (Closed)
Patch Set: s/thired/third/ 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 if (self.internals) {
33 assert_array_equals(
34 self.internals.getInternalResponseURLList(response),
35 ['data:,Foobar']);
36 }
32 return response.text(); 37 return response.text();
33 }) 38 })
34 .then(function(text) { 39 .then(function(text) {
35 assert_equals(text, 'Foobar'); 40 assert_equals(text, 'Foobar');
36 }); 41 });
37 }, 'fetch data: URL'); 42 }, 'fetch data: URL');
38 43
39 promise_test(function(t) { 44 promise_test(function(t) {
40 return fetch('data:,Foobar', 45 return fetch('data:,Foobar',
41 { 46 {
(...skipping 14 matching lines...) Expand all
56 }, 'fetch data: URL with the POST method'); 61 }, 'fetch data: URL with the POST method');
57 62
58 promise_test(function(t) { 63 promise_test(function(t) {
59 return fetch('data:text/html;charset=utf-8;base64,5paH5a2X') 64 return fetch('data:text/html;charset=utf-8;base64,5paH5a2X')
60 .then(function(response) { 65 .then(function(response) {
61 assert_equals(response.status, 200); 66 assert_equals(response.status, 200);
62 assert_equals(response.statusText, 'OK'); 67 assert_equals(response.statusText, 'OK');
63 assert_equals(response.headers.get('Content-Type'), 68 assert_equals(response.headers.get('Content-Type'),
64 'text/html;charset=utf-8'); 69 'text/html;charset=utf-8');
65 assert_equals(size(response.headers), 1); 70 assert_equals(size(response.headers), 1);
71 if (self.internals) {
72 assert_array_equals(
73 self.internals.getInternalResponseURLList(response),
74 ['data:text/html;charset=utf-8;base64,5paH5a2X']);
75 }
66 return response.text(); 76 return response.text();
67 }) 77 })
68 .then(function(text) { 78 .then(function(text) {
69 assert_equals(text, '\u6587\u5b57'); 79 assert_equals(text, '\u6587\u5b57');
70 }); 80 });
71 }, 'fetch data: URL with non-ASCII characters'); 81 }, 'fetch data: URL with non-ASCII characters');
72 82
73 promise_test(function(t) { 83 promise_test(function(t) {
74 return fetch('data:text/html;base64,***') 84 return fetch('data:text/html;base64,***')
75 .then( 85 .then(
76 t.unreached_func('fetching invalid data: URL must fail'), 86 t.unreached_func('fetching invalid data: URL must fail'),
77 function() {}); 87 function() {});
78 }, 'fetch invalid data: URL'); 88 }, 'fetch invalid data: URL');
79 89
80 // Only [Exposed=(Window,DedicatedWorker,SharedWorker)]. 90 // Only [Exposed=(Window,DedicatedWorker,SharedWorker)].
81 if ('createObjectURL' in URL) { 91 if ('createObjectURL' in URL) {
82 // Tests for blob: scheme. 92 // Tests for blob: scheme.
83 promise_test(function(t) { 93 promise_test(function(t) {
84 var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'})); 94 var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'}));
85 return fetch(url) 95 return fetch(url)
86 .then(function(response) { 96 .then(function(response) {
87 assert_equals(response.status, 200); 97 assert_equals(response.status, 200);
88 assert_equals(response.statusText, 'OK'); 98 assert_equals(response.statusText, 'OK');
89 assert_equals(response.headers.get('Content-Type'), 'text/fox'); 99 assert_equals(response.headers.get('Content-Type'), 'text/fox');
90 assert_equals(response.headers.get('Content-Length'), '3'); 100 assert_equals(response.headers.get('Content-Length'), '3');
91 assert_equals(size(response.headers), 2); 101 assert_equals(size(response.headers), 2);
102 if (self.internals) {
103 assert_array_equals(
104 self.internals.getInternalResponseURLList(response), [url]);
105 }
92 return response.text(); 106 return response.text();
93 }) 107 })
94 .then(function(text) { 108 .then(function(text) {
95 assert_equals(text, 'fox'); 109 assert_equals(text, 'fox');
96 }); 110 });
97 }, 'fetch blob: URL'); 111 }, 'fetch blob: URL');
98 112
99 promise_test(function(t) { 113 promise_test(function(t) {
100 var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'})); 114 var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'}));
101 return fetch(url + 'invalid') 115 return fetch(url + 'invalid')
102 .then( 116 .then(
103 t.unreached_func('fetching non-existent blob: URL must fail'), 117 t.unreached_func('fetching non-existent blob: URL must fail'),
104 function() {}); 118 function() {});
105 }, 'fetch non-existent blob: URL'); 119 }, 'fetch non-existent blob: URL');
106 } 120 }
107 121
108 // https://fetch.spec.whatwg.org/#concept-basic-fetch 122 // https://fetch.spec.whatwg.org/#concept-basic-fetch
109 // The last statement: 123 // The last statement:
110 // Otherwise 124 // Otherwise
111 // Return a network error. 125 // Return a network error.
112 promise_test(function(t) { 126 promise_test(function(t) {
113 return fetch('foobar://localhost/', {mode: 'no-cors'}) 127 return fetch('foobar://localhost/', {mode: 'no-cors'})
114 .then( 128 .then(
115 t.unreached_func('scheme not listed in basic fetch spec must fail'), 129 t.unreached_func('scheme not listed in basic fetch spec must fail'),
116 function() {}); 130 function() {});
117 }, 'fetch of scheme not listed in basic fetch spec'); 131 }, 'fetch of scheme not listed in basic fetch spec');
118 132
119 promise_test(function(t) { 133 promise_test(function(t) {
120 return fetch('/fetch/resources/fetch-status.php?status=200') 134 var request = new Request('/fetch/resources/fetch-status.php?status=200');
135 return fetch(request)
121 .then(function(response) { 136 .then(function(response) {
122 assert_equals(response.status, 200); 137 assert_equals(response.status, 200);
123 assert_equals(response.statusText, 'OK'); 138 assert_equals(response.statusText, 'OK');
139 if (self.internals) {
140 assert_array_equals(
141 self.internals.getInternalResponseURLList(response),
142 [request.url]);
143 }
124 }); 144 });
125 }, 'Fetch result of 200 response'); 145 }, 'Fetch result of 200 response');
126 146
127 promise_test(function(t) { 147 promise_test(function(t) {
128 return fetch('/fetch/resources/fetch-status.php?status=404') 148 var request = new Request('/fetch/resources/fetch-status.php?status=404');
149 return fetch(request)
129 .then(function(response) { 150 .then(function(response) {
130 assert_equals(response.status, 404); 151 assert_equals(response.status, 404);
131 assert_equals(response.statusText, 'Not Found'); 152 assert_equals(response.statusText, 'Not Found');
153 if (self.internals) {
154 assert_array_equals(
155 self.internals.getInternalResponseURLList(response),
156 [request.url]);
157 }
132 }); 158 });
133 }, 'Fetch result of 404 response'); 159 }, 'Fetch result of 404 response');
134 160
135 promise_test(function(t) { 161 promise_test(function(t) {
136 var request = new Request( 162 var request = new Request(
137 '/fetch/resources/fetch-status.php?status=200#fragment'); 163 '/fetch/resources/fetch-status.php?status=200#fragment');
138 164
139 // The url attribute's getter must return request's url, 165 // The url attribute's getter must return request's url,
140 // serialized with the exclude fragment flag set. 166 // serialized with the exclude fragment flag set.
141 assert_equals(request.url, 167 assert_equals(request.url,
142 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200'); 168 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200');
143 169
144 return fetch(request) 170 return fetch(request)
145 .then(function(response) { 171 .then(function(response) {
146 assert_equals(response.status, 200); 172 assert_equals(response.status, 200);
147 assert_equals(response.statusText, 'OK'); 173 assert_equals(response.statusText, 'OK');
148 // The url attribute's getter must return the empty string 174 // The url attribute's getter must return the empty string
149 // if response's url is null and response's url, 175 // if response's url is null and response's url,
150 // serialized with the exclude fragment flag set, otherwise. 176 // serialized with the exclude fragment flag set, otherwise.
151 assert_equals(response.url, 177 assert_equals(response.url,
152 BASE_ORIGIN + 178 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200');
153 '/fetch/resources/fetch-status.php?status=200'); 179 if (self.internals) {
180 assert_array_equals(
181 self.internals.getInternalResponseURLList(response),
182 [BASE_ORIGIN +
183 '/fetch/resources/fetch-status.php?status=200#fragment']);
184 }
154 }); 185 });
155 }, 'Request/response url attribute getter with fragment'); 186 }, 'Request/response url attribute getter with fragment');
156 187
157 promise_test(function(t) { 188 promise_test(function(t) {
158 var redirect_target_url = 189 var redirect_target_url =
159 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200'; 190 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200';
160 var redirect_original_url = 191 var redirect_original_url =
161 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' + 192 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' +
162 redirect_target_url; 193 redirect_target_url;
163 194
164 var request = new Request(redirect_original_url); 195 var request = new Request(redirect_original_url);
165 assert_equals(request.url, redirect_original_url, 196 assert_equals(request.url, redirect_original_url,
166 'Request\'s url is the original URL'); 197 'Request\'s url is the original URL');
167 assert_equals(request.redirect, 'follow'); 198 assert_equals(request.redirect, 'follow');
168 199
169 return fetch(request) 200 return fetch(request)
170 .then(function(response) { 201 .then(function(response) {
171 assert_equals(response.status, 200); 202 assert_equals(response.status, 200);
172 assert_equals(response.statusText, 'OK'); 203 assert_equals(response.statusText, 'OK');
173 assert_equals(response.url, redirect_target_url, 204 assert_equals(response.url, redirect_target_url,
174 'Response\'s url is locationURL'); 205 'Response\'s url is locationURL');
175 assert_equals(request.url, redirect_original_url, 206 assert_equals(request.url, redirect_original_url,
176 'Request\'s url remains the original URL'); 207 'Request\'s url remains the original URL');
208 if (self.internals) {
209 assert_array_equals(
210 self.internals.getInternalResponseURLList(response),
211 [request.url, response.url]);
212 }
177 }); 213 });
178 }, 'Request/response url attribute getter with redirect'); 214 }, 'Request/response url attribute getter with redirect');
179 215
180 promise_test(function(t) { 216 promise_test(function(t) {
181 var redirect_target_url = 217 var redirect_target_url =
182 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200'; 218 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200';
183 var redirect_original_url = 219 var redirect_original_url =
184 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' + 220 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' +
185 redirect_target_url; 221 redirect_target_url;
186 222
187 var request = new Request(redirect_original_url, {redirect: 'manual'}); 223 var request = new Request(redirect_original_url, {redirect: 'manual'});
188 assert_equals(request.url, redirect_original_url, 224 assert_equals(request.url, redirect_original_url,
189 'Request\'s url is the original URL'); 225 'Request\'s url is the original URL');
190 assert_equals(request.redirect, 'manual'); 226 assert_equals(request.redirect, 'manual');
191 227
192 return fetch(request) 228 return fetch(request)
193 .then(function(response) { 229 .then(function(response) {
194 assert_equals(response.status, 0); 230 assert_equals(response.status, 0);
195 assert_equals(response.type, 'opaqueredirect'); 231 assert_equals(response.type, 'opaqueredirect');
196 assert_equals(response.url, request.url); 232 assert_equals(response.url, request.url);
233 if (self.internals) {
234 assert_array_equals(
235 self.internals.getInternalResponseURLList(response),
236 [redirect_original_url]);
237 }
197 }); 238 });
198 }, 'Manual redirect fetch returns opaque redirect response'); 239 }, 'Manual redirect fetch returns opaque redirect response');
199 240
200 promise_test(function(t) { 241 promise_test(function(t) {
201 var redirect_target_url = 242 var redirect_target_url =
202 OTHER_ORIGIN + '/fetch/resources/fetch-status.php?status=200'; 243 OTHER_ORIGIN + '/fetch/resources/fetch-status.php?status=200';
203 var redirect_original_url = 244 var redirect_original_url =
204 OTHER_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' + 245 OTHER_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' +
205 redirect_target_url; 246 redirect_target_url;
206 247
(...skipping 30 matching lines...) Expand all
237 function() {}); 278 function() {});
238 }, 'Redirect response must cause an error when redirect mode is error.'); 279 }, 'Redirect response must cause an error when redirect mode is error.');
239 280
240 promise_test(function(test) { 281 promise_test(function(test) {
241 var url = BASE_ORIGIN + '/fetch/resources/doctype.html'; 282 var url = BASE_ORIGIN + '/fetch/resources/doctype.html';
242 return fetch(new Request(url, {redirect: 'manual'})) 283 return fetch(new Request(url, {redirect: 'manual'}))
243 .then(function(response) { 284 .then(function(response) {
244 assert_equals(response.status, 200); 285 assert_equals(response.status, 200);
245 assert_equals(response.statusText, 'OK'); 286 assert_equals(response.statusText, 'OK');
246 assert_equals(response.url, url); 287 assert_equals(response.url, url);
288 if (self.internals) {
289 assert_array_equals(
290 self.internals.getInternalResponseURLList(response), [url]);
291 }
247 return response.text(); 292 return response.text();
248 }) 293 })
249 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); }) 294 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); })
250 }, 'No-redirect fetch completes normally even if redirect mode is manual'); 295 }, 'No-redirect fetch completes normally even if redirect mode is manual');
251 296
252 promise_test(function(test) { 297 promise_test(function(test) {
253 var url = BASE_ORIGIN + '/fetch/resources/doctype.html'; 298 var url = BASE_ORIGIN + '/fetch/resources/doctype.html';
254 return fetch(new Request(url, {redirect: 'error'})) 299 return fetch(new Request(url, {redirect: 'error'}))
255 .then(function(response) { 300 .then(function(response) {
256 assert_equals(response.status, 200); 301 assert_equals(response.status, 200);
257 assert_equals(response.statusText, 'OK'); 302 assert_equals(response.statusText, 'OK');
258 assert_equals(response.url, url); 303 assert_equals(response.url, url);
304 if (self.internals) {
305 assert_array_equals(
306 self.internals.getInternalResponseURLList(response), [url]);
307 }
259 return response.text(); 308 return response.text();
260 }) 309 })
261 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); }) 310 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); })
262 }, 'No-redirect fetch completes normally even if redirect mode is error'); 311 }, 'No-redirect fetch completes normally even if redirect mode is error');
263 312
264 function evalJsonp(text) { 313 function evalJsonp(text) {
265 return new Promise(function(resolve) { 314 return new Promise(function(resolve) {
266 var report = resolve; 315 var report = resolve;
267 // text must contain report() call. 316 // text must contain report() call.
268 eval(text); 317 eval(text);
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 assert_true(req.bodyUsed); 433 assert_true(req.bodyUsed);
385 }, 'Calling fetch() disturbs body if not null'); 434 }, 'Calling fetch() disturbs body if not null');
386 435
387 test(t => { 436 test(t => {
388 var req = new Request('/', {method: 'POST'}); 437 var req = new Request('/', {method: 'POST'});
389 fetch(req); 438 fetch(req);
390 assert_false(req.bodyUsed); 439 assert_false(req.bodyUsed);
391 }, 'Calling fetch() doesn\'t disturb body if null'); 440 }, 'Calling fetch() doesn\'t disturb body if null');
392 441
393 done(); 442 done();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698