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

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: 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 ['data:,Foobar'],
35 self.internals.getInternalResponseURLList(response));
falken 2016/12/09 01:54:15 nit: actual and expected parameters are flipped (t
horo 2016/12/09 05:04:11 Done.
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:text/html;charset=utf-8;base64,5paH5a2X') 45 return fetch('data:text/html;charset=utf-8;base64,5paH5a2X')
41 .then(function(response) { 46 .then(function(response) {
42 assert_equals(response.status, 200); 47 assert_equals(response.status, 200);
43 assert_equals(response.statusText, 'OK'); 48 assert_equals(response.statusText, 'OK');
44 assert_equals(response.headers.get('Content-Type'), 49 assert_equals(response.headers.get('Content-Type'),
45 'text/html;charset=utf-8'); 50 'text/html;charset=utf-8');
46 assert_equals(size(response.headers), 1); 51 assert_equals(size(response.headers), 1);
52 if (self.internals) {
53 assert_array_equals(
54 ['data:text/html;charset=utf-8;base64,5paH5a2X'],
55 self.internals.getInternalResponseURLList(response));
56 }
47 return response.text(); 57 return response.text();
48 }) 58 })
49 .then(function(text) { 59 .then(function(text) {
50 assert_equals(text, '\u6587\u5b57'); 60 assert_equals(text, '\u6587\u5b57');
51 }); 61 });
52 }, 'fetch data: URL with non-ASCII characters'); 62 }, 'fetch data: URL with non-ASCII characters');
53 63
54 promise_test(function(t) { 64 promise_test(function(t) {
55 return fetch('data:text/html;base64,***') 65 return fetch('data:text/html;base64,***')
56 .then( 66 .then(
57 t.unreached_func('fetching invalid data: URL must fail'), 67 t.unreached_func('fetching invalid data: URL must fail'),
58 function() {}); 68 function() {});
59 }, 'fetch invalid data: URL'); 69 }, 'fetch invalid data: URL');
60 70
61 // Only [Exposed=(Window,DedicatedWorker,SharedWorker)]. 71 // Only [Exposed=(Window,DedicatedWorker,SharedWorker)].
62 if ('createObjectURL' in URL) { 72 if ('createObjectURL' in URL) {
63 // Tests for blob: scheme. 73 // Tests for blob: scheme.
64 promise_test(function(t) { 74 promise_test(function(t) {
65 var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'})); 75 var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'}));
66 return fetch(url) 76 return fetch(url)
67 .then(function(response) { 77 .then(function(response) {
68 assert_equals(response.status, 200); 78 assert_equals(response.status, 200);
69 assert_equals(response.statusText, 'OK'); 79 assert_equals(response.statusText, 'OK');
70 assert_equals(response.headers.get('Content-Type'), 'text/fox'); 80 assert_equals(response.headers.get('Content-Type'), 'text/fox');
71 assert_equals(response.headers.get('Content-Length'), '3'); 81 assert_equals(response.headers.get('Content-Length'), '3');
72 assert_equals(size(response.headers), 2); 82 assert_equals(size(response.headers), 2);
83 if (self.internals) {
84 assert_array_equals(
85 [url], self.internals.getInternalResponseURLList(response));
86 }
73 return response.text(); 87 return response.text();
74 }) 88 })
75 .then(function(text) { 89 .then(function(text) {
76 assert_equals(text, 'fox'); 90 assert_equals(text, 'fox');
77 }); 91 });
78 }, 'fetch blob: URL'); 92 }, 'fetch blob: URL');
79 93
80 promise_test(function(t) { 94 promise_test(function(t) {
81 var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'})); 95 var url = URL.createObjectURL(new Blob(['fox'], {type: 'text/fox'}));
82 return fetch(url + 'invalid') 96 return fetch(url + 'invalid')
83 .then( 97 .then(
84 t.unreached_func('fetching non-existent blob: URL must fail'), 98 t.unreached_func('fetching non-existent blob: URL must fail'),
85 function() {}); 99 function() {});
86 }, 'fetch non-existent blob: URL'); 100 }, 'fetch non-existent blob: URL');
87 } 101 }
88 102
89 // https://fetch.spec.whatwg.org/#concept-basic-fetch 103 // https://fetch.spec.whatwg.org/#concept-basic-fetch
90 // The last statement: 104 // The last statement:
91 // Otherwise 105 // Otherwise
92 // Return a network error. 106 // Return a network error.
93 promise_test(function(t) { 107 promise_test(function(t) {
94 return fetch('foobar://localhost/', {mode: 'no-cors'}) 108 return fetch('foobar://localhost/', {mode: 'no-cors'})
95 .then( 109 .then(
96 t.unreached_func('scheme not listed in basic fetch spec must fail'), 110 t.unreached_func('scheme not listed in basic fetch spec must fail'),
97 function() {}); 111 function() {});
98 }, 'fetch of scheme not listed in basic fetch spec'); 112 }, 'fetch of scheme not listed in basic fetch spec');
99 113
100 promise_test(function(t) { 114 promise_test(function(t) {
101 return fetch('/fetch/resources/fetch-status.php?status=200') 115 var request = new Request('/fetch/resources/fetch-status.php?status=200');
116 return fetch(request)
102 .then(function(response) { 117 .then(function(response) {
103 assert_equals(response.status, 200); 118 assert_equals(response.status, 200);
104 assert_equals(response.statusText, 'OK'); 119 assert_equals(response.statusText, 'OK');
120 if (self.internals) {
121 assert_array_equals(
122 [request.url],
123 self.internals.getInternalResponseURLList(response));
124 }
105 }); 125 });
106 }, 'Fetch result of 200 response'); 126 }, 'Fetch result of 200 response');
107 127
108 promise_test(function(t) { 128 promise_test(function(t) {
109 return fetch('/fetch/resources/fetch-status.php?status=404') 129 var request = new Request('/fetch/resources/fetch-status.php?status=404');
130 return fetch(request)
110 .then(function(response) { 131 .then(function(response) {
111 assert_equals(response.status, 404); 132 assert_equals(response.status, 404);
112 assert_equals(response.statusText, 'Not Found'); 133 assert_equals(response.statusText, 'Not Found');
134 if (self.internals) {
135 assert_array_equals(
136 [request.url],
137 self.internals.getInternalResponseURLList(response));
138 }
113 }); 139 });
114 }, 'Fetch result of 404 response'); 140 }, 'Fetch result of 404 response');
115 141
116 promise_test(function(t) { 142 promise_test(function(t) {
117 var request = new Request( 143 var request = new Request(
118 '/fetch/resources/fetch-status.php?status=200#fragment'); 144 '/fetch/resources/fetch-status.php?status=200#fragment');
119 145
120 // The url attribute's getter must return request's url, 146 // The url attribute's getter must return request's url,
121 // serialized with the exclude fragment flag set. 147 // serialized with the exclude fragment flag set.
122 assert_equals(request.url, 148 assert_equals(request.url,
123 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200'); 149 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200');
124 150
125 return fetch(request) 151 return fetch(request)
126 .then(function(response) { 152 .then(function(response) {
127 assert_equals(response.status, 200); 153 assert_equals(response.status, 200);
128 assert_equals(response.statusText, 'OK'); 154 assert_equals(response.statusText, 'OK');
129 // The url attribute's getter must return the empty string 155 // The url attribute's getter must return the empty string
130 // if response's url is null and response's url, 156 // if response's url is null and response's url,
131 // serialized with the exclude fragment flag set, otherwise. 157 // serialized with the exclude fragment flag set, otherwise.
132 assert_equals(response.url, 158 assert_equals(response.url,
133 BASE_ORIGIN + 159 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200');
134 '/fetch/resources/fetch-status.php?status=200'); 160 if (self.internals) {
161 assert_array_equals(
162 [BASE_ORIGIN +
163 '/fetch/resources/fetch-status.php?status=200#fragment'],
164 self.internals.getInternalResponseURLList(response));
165 }
135 }); 166 });
136 }, 'Request/response url attribute getter with fragment'); 167 }, 'Request/response url attribute getter with fragment');
137 168
138 promise_test(function(t) { 169 promise_test(function(t) {
139 var redirect_target_url = 170 var redirect_target_url =
140 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200'; 171 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200';
141 var redirect_original_url = 172 var redirect_original_url =
142 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' + 173 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' +
143 redirect_target_url; 174 redirect_target_url;
144 175
145 var request = new Request(redirect_original_url); 176 var request = new Request(redirect_original_url);
146 assert_equals(request.url, redirect_original_url, 177 assert_equals(request.url, redirect_original_url,
147 'Request\'s url is the original URL'); 178 'Request\'s url is the original URL');
148 assert_equals(request.redirect, 'follow'); 179 assert_equals(request.redirect, 'follow');
149 180
150 return fetch(request) 181 return fetch(request)
151 .then(function(response) { 182 .then(function(response) {
152 assert_equals(response.status, 200); 183 assert_equals(response.status, 200);
153 assert_equals(response.statusText, 'OK'); 184 assert_equals(response.statusText, 'OK');
154 assert_equals(response.url, redirect_target_url, 185 assert_equals(response.url, redirect_target_url,
155 'Response\'s url is locationURL'); 186 'Response\'s url is locationURL');
156 assert_equals(request.url, redirect_original_url, 187 assert_equals(request.url, redirect_original_url,
157 'Request\'s url remains the original URL'); 188 'Request\'s url remains the original URL');
189 if (self.internals) {
190 assert_array_equals(
191 [request.url, response.url],
192 self.internals.getInternalResponseURLList(response));
193 }
158 }); 194 });
159 }, 'Request/response url attribute getter with redirect'); 195 }, 'Request/response url attribute getter with redirect');
160 196
161 promise_test(function(t) { 197 promise_test(function(t) {
162 var redirect_target_url = 198 var redirect_target_url =
163 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200'; 199 BASE_ORIGIN + '/fetch/resources/fetch-status.php?status=200';
164 var redirect_original_url = 200 var redirect_original_url =
165 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' + 201 BASE_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' +
166 redirect_target_url; 202 redirect_target_url;
167 203
168 var request = new Request(redirect_original_url, {redirect: 'manual'}); 204 var request = new Request(redirect_original_url, {redirect: 'manual'});
169 assert_equals(request.url, redirect_original_url, 205 assert_equals(request.url, redirect_original_url,
170 'Request\'s url is the original URL'); 206 'Request\'s url is the original URL');
171 assert_equals(request.redirect, 'manual'); 207 assert_equals(request.redirect, 'manual');
172 208
173 return fetch(request) 209 return fetch(request)
174 .then(function(response) { 210 .then(function(response) {
175 assert_equals(response.status, 0); 211 assert_equals(response.status, 0);
176 assert_equals(response.type, 'opaqueredirect'); 212 assert_equals(response.type, 'opaqueredirect');
177 assert_equals(response.url, request.url); 213 assert_equals(response.url, request.url);
214 if (self.internals) {
215 assert_array_equals(
216 [redirect_original_url],
217 self.internals.getInternalResponseURLList(response));
218 }
178 }); 219 });
179 }, 'Manual redirect fetch returns opaque redirect response'); 220 }, 'Manual redirect fetch returns opaque redirect response');
180 221
181 promise_test(function(t) { 222 promise_test(function(t) {
182 var redirect_target_url = 223 var redirect_target_url =
183 OTHER_ORIGIN + '/fetch/resources/fetch-status.php?status=200'; 224 OTHER_ORIGIN + '/fetch/resources/fetch-status.php?status=200';
184 var redirect_original_url = 225 var redirect_original_url =
185 OTHER_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' + 226 OTHER_ORIGIN + '/serviceworker/resources/redirect.php?Redirect=' +
186 redirect_target_url; 227 redirect_target_url;
187 228
(...skipping 30 matching lines...) Expand all
218 function() {}); 259 function() {});
219 }, 'Redirect response must cause an error when redirect mode is error.'); 260 }, 'Redirect response must cause an error when redirect mode is error.');
220 261
221 promise_test(function(test) { 262 promise_test(function(test) {
222 var url = BASE_ORIGIN + '/fetch/resources/doctype.html'; 263 var url = BASE_ORIGIN + '/fetch/resources/doctype.html';
223 return fetch(new Request(url, {redirect: 'manual'})) 264 return fetch(new Request(url, {redirect: 'manual'}))
224 .then(function(response) { 265 .then(function(response) {
225 assert_equals(response.status, 200); 266 assert_equals(response.status, 200);
226 assert_equals(response.statusText, 'OK'); 267 assert_equals(response.statusText, 'OK');
227 assert_equals(response.url, url); 268 assert_equals(response.url, url);
269 if (self.internals) {
270 assert_array_equals(
271 [url], self.internals.getInternalResponseURLList(response));
272 }
228 return response.text(); 273 return response.text();
229 }) 274 })
230 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); }) 275 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); })
231 }, 'No-redirect fetch completes normally even if redirect mode is manual'); 276 }, 'No-redirect fetch completes normally even if redirect mode is manual');
232 277
233 promise_test(function(test) { 278 promise_test(function(test) {
234 var url = BASE_ORIGIN + '/fetch/resources/doctype.html'; 279 var url = BASE_ORIGIN + '/fetch/resources/doctype.html';
235 return fetch(new Request(url, {redirect: 'error'})) 280 return fetch(new Request(url, {redirect: 'error'}))
236 .then(function(response) { 281 .then(function(response) {
237 assert_equals(response.status, 200); 282 assert_equals(response.status, 200);
238 assert_equals(response.statusText, 'OK'); 283 assert_equals(response.statusText, 'OK');
239 assert_equals(response.url, url); 284 assert_equals(response.url, url);
285 if (self.internals) {
286 assert_array_equals(
287 [url], self.internals.getInternalResponseURLList(response));
288 }
240 return response.text(); 289 return response.text();
241 }) 290 })
242 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); }) 291 .then(function(text) { assert_equals(text, '<!DOCTYPE html>\n'); })
243 }, 'No-redirect fetch completes normally even if redirect mode is error'); 292 }, 'No-redirect fetch completes normally even if redirect mode is error');
244 293
245 function evalJsonp(text) { 294 function evalJsonp(text) {
246 return new Promise(function(resolve) { 295 return new Promise(function(resolve) {
247 var report = resolve; 296 var report = resolve;
248 // text must contain report() call. 297 // text must contain report() call.
249 eval(text); 298 eval(text);
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 assert_true(req.bodyUsed); 414 assert_true(req.bodyUsed);
366 }, 'Calling fetch() disturbs body if not null'); 415 }, 'Calling fetch() disturbs body if not null');
367 416
368 test(t => { 417 test(t => {
369 var req = new Request('/', {method: 'POST'}); 418 var req = new Request('/', {method: 'POST'});
370 fetch(req); 419 fetch(req);
371 assert_false(req.bodyUsed); 420 assert_false(req.bodyUsed);
372 }, 'Calling fetch() doesn\'t disturb body if null'); 421 }, 'Calling fetch() doesn\'t disturb body if null');
373 422
374 done(); 423 done();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698