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

Side by Side Diff: utils/tests/pub/curl_client_test.dart

Issue 11783009: Big merge from experimental to bleeding edge. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « utils/tests/archive/reader_test.dart ('k') | utils/tests/pub/oauth2_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library curl_client_test; 5 library curl_client_test;
6 6
7 import 'dart:io'; 7 import 'dart:io';
8 import 'dart:isolate'; 8 import 'dart:isolate';
9 import 'dart:json'; 9 import 'dart:json';
10 import 'dart:uri'; 10 import 'dart:uri';
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 item is RedirectLimitExceededException; 208 item is RedirectLimitExceededException;
209 } 209 }
210 210
211 // ---------------------------------------------------------------------------- 211 // ----------------------------------------------------------------------------
212 212
213 void main() { 213 void main() {
214 setUp(startServer); 214 setUp(startServer);
215 tearDown(stopServer); 215 tearDown(stopServer);
216 216
217 test('head', () { 217 test('head', () {
218 expect(new CurlClient().head(serverUrl).transform((response) { 218 expect(new CurlClient().head(serverUrl).then((response) {
219 expect(response.statusCode, equals(200)); 219 expect(response.statusCode, equals(200));
220 expect(response.body, equals('')); 220 expect(response.body, equals(''));
221 }), completes); 221 }), completes);
222 }); 222 });
223 223
224 test('get', () { 224 test('get', () {
225 expect(new CurlClient().get(serverUrl, headers: { 225 expect(new CurlClient().get(serverUrl, headers: {
226 'X-Random-Header': 'Value', 226 'X-Random-Header': 'Value',
227 'X-Other-Header': 'Other Value' 227 'X-Other-Header': 'Other Value'
228 }).transform((response) { 228 }).then((response) {
229 expect(response.statusCode, equals(200)); 229 expect(response.statusCode, equals(200));
230 expect(response.body, parse(equals({ 230 expect(response.body, parse(equals({
231 'method': 'GET', 231 'method': 'GET',
232 'path': '/', 232 'path': '/',
233 'headers': { 233 'headers': {
234 'x-random-header': ['Value'], 234 'x-random-header': ['Value'],
235 'x-other-header': ['Other Value'] 235 'x-other-header': ['Other Value']
236 }, 236 },
237 }))); 237 })));
238 }), completes); 238 }), completes);
239 }); 239 });
240 240
241 test('post', () { 241 test('post', () {
242 expect(new CurlClient().post(serverUrl, headers: { 242 expect(new CurlClient().post(serverUrl, headers: {
243 'X-Random-Header': 'Value', 243 'X-Random-Header': 'Value',
244 'X-Other-Header': 'Other Value' 244 'X-Other-Header': 'Other Value'
245 }, fields: { 245 }, fields: {
246 'some-field': 'value', 246 'some-field': 'value',
247 'other-field': 'other value' 247 'other-field': 'other value'
248 }).transform((response) { 248 }).then((response) {
249 expect(response.statusCode, equals(200)); 249 expect(response.statusCode, equals(200));
250 expect(response.body, parse(equals({ 250 expect(response.body, parse(equals({
251 'method': 'POST', 251 'method': 'POST',
252 'path': '/', 252 'path': '/',
253 'headers': { 253 'headers': {
254 'content-type': [ 254 'content-type': [
255 'application/x-www-form-urlencoded; charset=UTF-8' 255 'application/x-www-form-urlencoded; charset=UTF-8'
256 ], 256 ],
257 'content-length': ['40'], 257 'content-length': ['40'],
258 'x-random-header': ['Value'], 258 'x-random-header': ['Value'],
259 'x-other-header': ['Other Value'] 259 'x-other-header': ['Other Value']
260 }, 260 },
261 'body': 'some-field=value&other-field=other+value' 261 'body': 'some-field=value&other-field=other+value'
262 }))); 262 })));
263 }), completes); 263 }), completes);
264 }); 264 });
265 265
266 test('post without fields', () { 266 test('post without fields', () {
267 expect(new CurlClient().post(serverUrl, headers: { 267 expect(new CurlClient().post(serverUrl, headers: {
268 'X-Random-Header': 'Value', 268 'X-Random-Header': 'Value',
269 'X-Other-Header': 'Other Value', 269 'X-Other-Header': 'Other Value',
270 'Content-Type': 'text/plain' 270 'Content-Type': 'text/plain'
271 }).transform((response) { 271 }).then((response) {
272 expect(response.statusCode, equals(200)); 272 expect(response.statusCode, equals(200));
273 expect(response.body, parse(equals({ 273 expect(response.body, parse(equals({
274 'method': 'POST', 274 'method': 'POST',
275 'path': '/', 275 'path': '/',
276 'headers': { 276 'headers': {
277 'content-type': ['text/plain'], 277 'content-type': ['text/plain'],
278 'x-random-header': ['Value'], 278 'x-random-header': ['Value'],
279 'x-other-header': ['Other Value'] 279 'x-other-header': ['Other Value']
280 } 280 }
281 }))); 281 })));
282 }), completes); 282 }), completes);
283 }); 283 });
284 284
285 test('put', () { 285 test('put', () {
286 expect(new CurlClient().put(serverUrl, headers: { 286 expect(new CurlClient().put(serverUrl, headers: {
287 'X-Random-Header': 'Value', 287 'X-Random-Header': 'Value',
288 'X-Other-Header': 'Other Value' 288 'X-Other-Header': 'Other Value'
289 }, fields: { 289 }, fields: {
290 'some-field': 'value', 290 'some-field': 'value',
291 'other-field': 'other value' 291 'other-field': 'other value'
292 }).transform((response) { 292 }).then((response) {
293 expect(response.statusCode, equals(200)); 293 expect(response.statusCode, equals(200));
294 expect(response.body, parse(equals({ 294 expect(response.body, parse(equals({
295 'method': 'PUT', 295 'method': 'PUT',
296 'path': '/', 296 'path': '/',
297 'headers': { 297 'headers': {
298 'content-type': [ 298 'content-type': [
299 'application/x-www-form-urlencoded; charset=UTF-8' 299 'application/x-www-form-urlencoded; charset=UTF-8'
300 ], 300 ],
301 'content-length': ['40'], 301 'content-length': ['40'],
302 'x-random-header': ['Value'], 302 'x-random-header': ['Value'],
303 'x-other-header': ['Other Value'] 303 'x-other-header': ['Other Value']
304 }, 304 },
305 'body': 'some-field=value&other-field=other+value' 305 'body': 'some-field=value&other-field=other+value'
306 }))); 306 })));
307 }), completes); 307 }), completes);
308 }); 308 });
309 309
310 test('put without fields', () { 310 test('put without fields', () {
311 expect(new CurlClient().put(serverUrl, headers: { 311 expect(new CurlClient().put(serverUrl, headers: {
312 'X-Random-Header': 'Value', 312 'X-Random-Header': 'Value',
313 'X-Other-Header': 'Other Value', 313 'X-Other-Header': 'Other Value',
314 'Content-Type': 'text/plain' 314 'Content-Type': 'text/plain'
315 }).transform((response) { 315 }).then((response) {
316 expect(response.statusCode, equals(200)); 316 expect(response.statusCode, equals(200));
317 expect(response.body, parse(equals({ 317 expect(response.body, parse(equals({
318 'method': 'PUT', 318 'method': 'PUT',
319 'path': '/', 319 'path': '/',
320 'headers': { 320 'headers': {
321 'content-type': ['text/plain'], 321 'content-type': ['text/plain'],
322 'x-random-header': ['Value'], 322 'x-random-header': ['Value'],
323 'x-other-header': ['Other Value'] 323 'x-other-header': ['Other Value']
324 } 324 }
325 }))); 325 })));
326 }), completes); 326 }), completes);
327 }); 327 });
328 328
329 test('delete', () { 329 test('delete', () {
330 expect(new CurlClient().delete(serverUrl, headers: { 330 expect(new CurlClient().delete(serverUrl, headers: {
331 'X-Random-Header': 'Value', 331 'X-Random-Header': 'Value',
332 'X-Other-Header': 'Other Value' 332 'X-Other-Header': 'Other Value'
333 }).transform((response) { 333 }).then((response) {
334 expect(response.statusCode, equals(200)); 334 expect(response.statusCode, equals(200));
335 expect(response.body, parse(equals({ 335 expect(response.body, parse(equals({
336 'method': 'DELETE', 336 'method': 'DELETE',
337 'path': '/', 337 'path': '/',
338 'headers': { 338 'headers': {
339 'x-random-header': ['Value'], 339 'x-random-header': ['Value'],
340 'x-other-header': ['Other Value'] 340 'x-other-header': ['Other Value']
341 } 341 }
342 }))); 342 })));
343 }), completes); 343 }), completes);
(...skipping 15 matching lines...) Expand all
359 359
360 test('read throws an error for a 4** status code', () { 360 test('read throws an error for a 4** status code', () {
361 expect(new CurlClient().read(serverUrl.resolve('/error')), 361 expect(new CurlClient().read(serverUrl.resolve('/error')),
362 throwsHttpException); 362 throwsHttpException);
363 }); 363 });
364 364
365 test('readBytes', () { 365 test('readBytes', () {
366 var future = new CurlClient().readBytes(serverUrl, headers: { 366 var future = new CurlClient().readBytes(serverUrl, headers: {
367 'X-Random-Header': 'Value', 367 'X-Random-Header': 'Value',
368 'X-Other-Header': 'Other Value' 368 'X-Other-Header': 'Other Value'
369 }).transform((bytes) => new String.fromCharCodes(bytes)); 369 }).then((bytes) => new String.fromCharCodes(bytes));
370 370
371 expect(future, completion(parse(equals({ 371 expect(future, completion(parse(equals({
372 'method': 'GET', 372 'method': 'GET',
373 'path': '/', 373 'path': '/',
374 'headers': { 374 'headers': {
375 'x-random-header': ['Value'], 375 'x-random-header': ['Value'],
376 'x-other-header': ['Other Value'] 376 'x-other-header': ['Other Value']
377 }, 377 },
378 })))); 378 }))));
379 }); 379 });
380 380
381 test('readBytes throws an error for a 4** status code', () { 381 test('readBytes throws an error for a 4** status code', () {
382 expect(new CurlClient().readBytes(serverUrl.resolve('/error')), 382 expect(new CurlClient().readBytes(serverUrl.resolve('/error')),
383 throwsHttpException); 383 throwsHttpException);
384 }); 384 });
385 385
386 test('#send a StreamedRequest', () { 386 test('#send a StreamedRequest', () {
387 var client = new CurlClient(); 387 var client = new CurlClient();
388 var request = new http.StreamedRequest("POST", serverUrl); 388 var request = new http.StreamedRequest("POST", serverUrl);
389 request.headers[HttpHeaders.CONTENT_TYPE] = 389 request.headers[HttpHeaders.CONTENT_TYPE] =
390 'application/json; charset=utf-8'; 390 'application/json; charset=utf-8';
391 391
392 var future = client.send(request).chain((response) { 392 var future = client.send(request).then((response) {
393 expect(response.statusCode, equals(200)); 393 expect(response.statusCode, equals(200));
394 return consumeInputStream(response.stream); 394 return consumeInputStream(response.stream);
395 }).transform((bytes) => new String.fromCharCodes(bytes)); 395 }).then((bytes) => new String.fromCharCodes(bytes));
396 future.onComplete((_) => client.close()); 396 future.catchError((_) {}).then((_) => client.close());
397 397
398 expect(future, completion(parse(equals({ 398 expect(future, completion(parse(equals({
399 'method': 'POST', 399 'method': 'POST',
400 'path': '/', 400 'path': '/',
401 'headers': { 401 'headers': {
402 'content-type': ['application/json; charset=utf-8'], 402 'content-type': ['application/json; charset=utf-8'],
403 'transfer-encoding': ['chunked'] 403 'transfer-encoding': ['chunked']
404 }, 404 },
405 'body': '{"hello": "world"}' 405 'body': '{"hello": "world"}'
406 })))); 406 }))));
407 407
408 request.stream.writeString('{"hello": "world"}'); 408 request.stream.writeString('{"hello": "world"}');
409 request.stream.close(); 409 request.stream.close();
410 }); 410 });
411 411
412 test('with one redirect', () { 412 test('with one redirect', () {
413 var url = serverUrl.resolve('/redirect'); 413 var url = serverUrl.resolve('/redirect');
414 expect(new CurlClient().get(url).transform((response) { 414 expect(new CurlClient().get(url).then((response) {
415 expect(response.statusCode, equals(200)); 415 expect(response.statusCode, equals(200));
416 expect(response.body, parse(equals({ 416 expect(response.body, parse(equals({
417 'method': 'GET', 417 'method': 'GET',
418 'path': '/', 418 'path': '/',
419 'headers': {} 419 'headers': {}
420 }))); 420 })));
421 }), completes); 421 }), completes);
422 }); 422 });
423 423
424 test('with too many redirects', () { 424 test('with too many redirects', () {
425 expect(new CurlClient().get(serverUrl.resolve('/loop?1')), 425 expect(new CurlClient().get(serverUrl.resolve('/loop?1')),
426 throwsRedirectLimitExceededException); 426 throwsRedirectLimitExceededException);
427 }); 427 });
428 428
429 test('with a generic failure', () { 429 test('with a generic failure', () {
430 expect(new CurlClient().get('url fail'), 430 expect(new CurlClient().get('url fail'),
431 throwsHttpException); 431 throwsHttpException);
432 }); 432 });
433 433
434 test('with one redirect via HEAD', () { 434 test('with one redirect via HEAD', () {
435 var url = serverUrl.resolve('/redirect'); 435 var url = serverUrl.resolve('/redirect');
436 expect(new CurlClient().head(url).transform((response) { 436 expect(new CurlClient().head(url).then((response) {
437 expect(response.statusCode, equals(200)); 437 expect(response.statusCode, equals(200));
438 }), completes); 438 }), completes);
439 }); 439 });
440 440
441 test('with too many redirects via HEAD', () { 441 test('with too many redirects via HEAD', () {
442 expect(new CurlClient().head(serverUrl.resolve('/loop?1')), 442 expect(new CurlClient().head(serverUrl.resolve('/loop?1')),
443 throwsRedirectLimitExceededException); 443 throwsRedirectLimitExceededException);
444 }); 444 });
445 445
446 test('with a generic failure via HEAD', () { 446 test('with a generic failure via HEAD', () {
447 expect(new CurlClient().head('url fail'), 447 expect(new CurlClient().head('url fail'),
448 throwsHttpException); 448 throwsHttpException);
449 }); 449 });
450 450
451 test('without following redirects', () { 451 test('without following redirects', () {
452 var request = new http.Request('GET', serverUrl.resolve('/redirect')); 452 var request = new http.Request('GET', serverUrl.resolve('/redirect'));
453 request.followRedirects = false; 453 request.followRedirects = false;
454 expect(new CurlClient().send(request).chain(http.Response.fromStream) 454 expect(new CurlClient().send(request).then(http.Response.fromStream)
455 .transform((response) { 455 .then((response) {
456 expect(response.statusCode, equals(302)); 456 expect(response.statusCode, equals(302));
457 expect(response.isRedirect, true); 457 expect(response.isRedirect, true);
458 }), completes); 458 }), completes);
459 }); 459 });
460 } 460 }
OLDNEW
« no previous file with comments | « utils/tests/archive/reader_test.dart ('k') | utils/tests/pub/oauth2_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698