| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 request_test; | 5 library request_test; |
| 6 | 6 |
| 7 import 'dart:convert'; |
| 7 import 'dart:io'; | 8 import 'dart:io'; |
| 8 | 9 |
| 9 import 'package:http/http.dart' as http; | 10 import 'package:http/http.dart' as http; |
| 10 import 'package:unittest/unittest.dart'; | 11 import 'package:unittest/unittest.dart'; |
| 11 | 12 |
| 12 import 'utils.dart'; | 13 import 'utils.dart'; |
| 13 | 14 |
| 14 void main() { | 15 void main() { |
| 15 test('.send', () { | 16 test('.send', () { |
| 16 expect(startServer().then((_) { | 17 expect(startServer().then((_) { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 | 56 |
| 56 test('is not directly mutable', () { | 57 test('is not directly mutable', () { |
| 57 var request = new http.Request('POST', dummyUrl); | 58 var request = new http.Request('POST', dummyUrl); |
| 58 expect(() => request.contentLength = 50, throwsUnsupportedError); | 59 expect(() => request.contentLength = 50, throwsUnsupportedError); |
| 59 }); | 60 }); |
| 60 }); | 61 }); |
| 61 | 62 |
| 62 group('#encoding', () { | 63 group('#encoding', () { |
| 63 test('defaults to utf-8', () { | 64 test('defaults to utf-8', () { |
| 64 var request = new http.Request('POST', dummyUrl); | 65 var request = new http.Request('POST', dummyUrl); |
| 65 expect(request.encoding.name, equals(Encoding.UTF_8.name)); | 66 expect(request.encoding.name, equals(UTF8.name)); |
| 66 }); | 67 }); |
| 67 | 68 |
| 68 test('can be set', () { | 69 test('can be set', () { |
| 69 var request = new http.Request('POST', dummyUrl); | 70 var request = new http.Request('POST', dummyUrl); |
| 70 request.encoding = Encoding.ISO_8859_1; | 71 request.encoding = LATIN1; |
| 71 expect(request.encoding.name, equals(Encoding.ISO_8859_1.name)); | 72 expect(request.encoding.name, equals(LATIN1.name)); |
| 72 }); | 73 }); |
| 73 | 74 |
| 74 test('is based on the content-type charset if it exists', () { | 75 test('is based on the content-type charset if it exists', () { |
| 75 var request = new http.Request('POST', dummyUrl); | 76 var request = new http.Request('POST', dummyUrl); |
| 76 request.headers[HttpHeaders.CONTENT_TYPE] = | 77 request.headers[HttpHeaders.CONTENT_TYPE] = |
| 77 'text/plain; charset=iso-8859-1'; | 78 'text/plain; charset=iso-8859-1'; |
| 78 expect(request.encoding.name, equals(Encoding.ISO_8859_1.name)); | 79 expect(request.encoding.name, equals(LATIN1.name)); |
| 79 }); | 80 }); |
| 80 | 81 |
| 81 test('remains the default if the content-type charset is set and unset', | 82 test('remains the default if the content-type charset is set and unset', |
| 82 () { | 83 () { |
| 83 var request = new http.Request('POST', dummyUrl); | 84 var request = new http.Request('POST', dummyUrl); |
| 84 request.encoding = Encoding.ISO_8859_1; | 85 request.encoding = LATIN1; |
| 85 request.headers[HttpHeaders.CONTENT_TYPE] = | 86 request.headers[HttpHeaders.CONTENT_TYPE] = |
| 86 'text/plain; charset=utf-8'; | 87 'text/plain; charset=utf-8'; |
| 87 expect(request.encoding.name, equals(Encoding.UTF_8.name)); | 88 expect(request.encoding.name, equals(UTF8.name)); |
| 88 | 89 |
| 89 request.headers.remove(HttpHeaders.CONTENT_TYPE); | 90 request.headers.remove(HttpHeaders.CONTENT_TYPE); |
| 90 expect(request.encoding.name, equals(Encoding.ISO_8859_1.name)); | 91 expect(request.encoding.name, equals(LATIN1.name)); |
| 91 }); | 92 }); |
| 92 | 93 |
| 93 test('throws an error if the content-type charset is unknown', () { | 94 test('throws an error if the content-type charset is unknown', () { |
| 94 var request = new http.Request('POST', dummyUrl); | 95 var request = new http.Request('POST', dummyUrl); |
| 95 request.headers[HttpHeaders.CONTENT_TYPE] = | 96 request.headers[HttpHeaders.CONTENT_TYPE] = |
| 96 'text/plain; charset=not-a-real-charset'; | 97 'text/plain; charset=not-a-real-charset'; |
| 97 expect(() => request.encoding, throwsFormatException); | 98 expect(() => request.encoding, throwsFormatException); |
| 98 }); | 99 }); |
| 99 }); | 100 }); |
| 100 | 101 |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 }); | 234 }); |
| 234 | 235 |
| 235 group('content-type header', () { | 236 group('content-type header', () { |
| 236 test('defaults to empty', () { | 237 test('defaults to empty', () { |
| 237 var request = new http.Request('POST', dummyUrl); | 238 var request = new http.Request('POST', dummyUrl); |
| 238 expect(request.headers[HttpHeaders.CONTENT_TYPE], isNull); | 239 expect(request.headers[HttpHeaders.CONTENT_TYPE], isNull); |
| 239 }); | 240 }); |
| 240 | 241 |
| 241 test('defaults to empty if only encoding is set', () { | 242 test('defaults to empty if only encoding is set', () { |
| 242 var request = new http.Request('POST', dummyUrl); | 243 var request = new http.Request('POST', dummyUrl); |
| 243 request.encoding = Encoding.ISO_8859_1; | 244 request.encoding = LATIN1; |
| 244 expect(request.headers[HttpHeaders.CONTENT_TYPE], isNull); | 245 expect(request.headers[HttpHeaders.CONTENT_TYPE], isNull); |
| 245 }); | 246 }); |
| 246 | 247 |
| 247 test('is set to application/x-www-form-urlencoded with charset utf-8 if ' | 248 test('is set to application/x-www-form-urlencoded with charset utf-8 if ' |
| 248 'bodyFields is set', () { | 249 'bodyFields is set', () { |
| 249 var request = new http.Request('POST', dummyUrl); | 250 var request = new http.Request('POST', dummyUrl); |
| 250 request.bodyFields = {'hello': 'world'}; | 251 request.bodyFields = {'hello': 'world'}; |
| 251 expect(request.headers[HttpHeaders.CONTENT_TYPE], | 252 expect(request.headers[HttpHeaders.CONTENT_TYPE], |
| 252 equals('application/x-www-form-urlencoded; charset=utf-8')); | 253 equals('application/x-www-form-urlencoded; charset=utf-8')); |
| 253 }); | 254 }); |
| 254 | 255 |
| 255 test('is set to application/x-www-form-urlencoded with the given charset ' | 256 test('is set to application/x-www-form-urlencoded with the given charset ' |
| 256 'if bodyFields and encoding are set', () { | 257 'if bodyFields and encoding are set', () { |
| 257 var request = new http.Request('POST', dummyUrl); | 258 var request = new http.Request('POST', dummyUrl); |
| 258 request.encoding = Encoding.ISO_8859_1; | 259 request.encoding = LATIN1; |
| 259 request.bodyFields = {'hello': 'world'}; | 260 request.bodyFields = {'hello': 'world'}; |
| 260 expect(request.headers[HttpHeaders.CONTENT_TYPE], | 261 expect(request.headers[HttpHeaders.CONTENT_TYPE], |
| 261 equals('application/x-www-form-urlencoded; charset=iso-8859-1')); | 262 equals('application/x-www-form-urlencoded; charset=iso-8859-1')); |
| 262 }); | 263 }); |
| 263 | 264 |
| 264 test('is set to text/plain and the given encoding if body and encoding are ' | 265 test('is set to text/plain and the given encoding if body and encoding are ' |
| 265 'both set', () { | 266 'both set', () { |
| 266 var request = new http.Request('POST', dummyUrl); | 267 var request = new http.Request('POST', dummyUrl); |
| 267 request.encoding = Encoding.ISO_8859_1; | 268 request.encoding = LATIN1; |
| 268 request.body = 'hello, world'; | 269 request.body = 'hello, world'; |
| 269 expect(request.headers[HttpHeaders.CONTENT_TYPE], | 270 expect(request.headers[HttpHeaders.CONTENT_TYPE], |
| 270 equals('text/plain; charset=iso-8859-1')); | 271 equals('text/plain; charset=iso-8859-1')); |
| 271 }); | 272 }); |
| 272 | 273 |
| 273 test('is modified to include utf-8 if body is set', () { | 274 test('is modified to include utf-8 if body is set', () { |
| 274 var request = new http.Request('POST', dummyUrl); | 275 var request = new http.Request('POST', dummyUrl); |
| 275 request.headers[HttpHeaders.CONTENT_TYPE] = 'application/json'; | 276 request.headers[HttpHeaders.CONTENT_TYPE] = 'application/json'; |
| 276 request.body = '{"hello": "world"}'; | 277 request.body = '{"hello": "world"}'; |
| 277 expect(request.headers[HttpHeaders.CONTENT_TYPE], | 278 expect(request.headers[HttpHeaders.CONTENT_TYPE], |
| 278 equals('application/json; charset=utf-8')); | 279 equals('application/json; charset=utf-8')); |
| 279 }); | 280 }); |
| 280 | 281 |
| 281 test('is modified to include the given encoding if encoding is set', () { | 282 test('is modified to include the given encoding if encoding is set', () { |
| 282 var request = new http.Request('POST', dummyUrl); | 283 var request = new http.Request('POST', dummyUrl); |
| 283 request.headers[HttpHeaders.CONTENT_TYPE] = 'application/json'; | 284 request.headers[HttpHeaders.CONTENT_TYPE] = 'application/json'; |
| 284 request.encoding = Encoding.ISO_8859_1; | 285 request.encoding = LATIN1; |
| 285 expect(request.headers[HttpHeaders.CONTENT_TYPE], | 286 expect(request.headers[HttpHeaders.CONTENT_TYPE], |
| 286 equals('application/json; charset=iso-8859-1')); | 287 equals('application/json; charset=iso-8859-1')); |
| 287 }); | 288 }); |
| 288 | 289 |
| 289 test('has its charset overridden by an explicit encoding', () { | 290 test('has its charset overridden by an explicit encoding', () { |
| 290 var request = new http.Request('POST', dummyUrl); | 291 var request = new http.Request('POST', dummyUrl); |
| 291 request.headers[HttpHeaders.CONTENT_TYPE] = | 292 request.headers[HttpHeaders.CONTENT_TYPE] = |
| 292 'application/json; charset=utf-8'; | 293 'application/json; charset=utf-8'; |
| 293 request.encoding = Encoding.ISO_8859_1; | 294 request.encoding = LATIN1; |
| 294 expect(request.headers[HttpHeaders.CONTENT_TYPE], | 295 expect(request.headers[HttpHeaders.CONTENT_TYPE], |
| 295 equals('application/json; charset=iso-8859-1')); | 296 equals('application/json; charset=iso-8859-1')); |
| 296 }); | 297 }); |
| 297 | 298 |
| 298 test("doen't have its charset overridden by setting bodyFields", () { | 299 test("doen't have its charset overridden by setting bodyFields", () { |
| 299 var request = new http.Request('POST', dummyUrl); | 300 var request = new http.Request('POST', dummyUrl); |
| 300 request.headers[HttpHeaders.CONTENT_TYPE] = | 301 request.headers[HttpHeaders.CONTENT_TYPE] = |
| 301 'application/x-www-form-urlencoded; charset=iso-8859-1'; | 302 'application/x-www-form-urlencoded; charset=iso-8859-1'; |
| 302 request.bodyFields = {'hello': 'world'}; | 303 request.bodyFields = {'hello': 'world'}; |
| 303 expect(request.headers[HttpHeaders.CONTENT_TYPE], | 304 expect(request.headers[HttpHeaders.CONTENT_TYPE], |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 request.finalize(); | 344 request.finalize(); |
| 344 | 345 |
| 345 expect(request.maxRedirects, equals(5)); | 346 expect(request.maxRedirects, equals(5)); |
| 346 expect(() => request.maxRedirects = 10, throwsStateError); | 347 expect(() => request.maxRedirects = 10, throwsStateError); |
| 347 }); | 348 }); |
| 348 | 349 |
| 349 test('freezes #encoding', () { | 350 test('freezes #encoding', () { |
| 350 var request = new http.Request('POST', dummyUrl); | 351 var request = new http.Request('POST', dummyUrl); |
| 351 request.finalize(); | 352 request.finalize(); |
| 352 | 353 |
| 353 expect(request.encoding.name, equals(Encoding.UTF_8.name)); | 354 expect(request.encoding.name, equals(UTF8.name)); |
| 354 expect(() => request.encoding = Encoding.ASCII, throwsStateError); | 355 expect(() => request.encoding = ASCII, throwsStateError); |
| 355 }); | 356 }); |
| 356 | 357 |
| 357 test('freezes #bodyBytes', () { | 358 test('freezes #bodyBytes', () { |
| 358 var request = new http.Request('POST', dummyUrl); | 359 var request = new http.Request('POST', dummyUrl); |
| 359 request.bodyBytes = [1, 2, 3]; | 360 request.bodyBytes = [1, 2, 3]; |
| 360 request.finalize(); | 361 request.finalize(); |
| 361 | 362 |
| 362 expect(request.bodyBytes, equals([1, 2, 3])); | 363 expect(request.bodyBytes, equals([1, 2, 3])); |
| 363 expect(() => request.bodyBytes = [4, 5, 6], throwsStateError); | 364 expect(() => request.bodyBytes = [4, 5, 6], throwsStateError); |
| 364 }); | 365 }); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 389 }); | 390 }); |
| 390 | 391 |
| 391 group('#toString()', () { | 392 group('#toString()', () { |
| 392 test('includes the method and URL', () { | 393 test('includes the method and URL', () { |
| 393 var request = new http.Request('POST', dummyUrl); | 394 var request = new http.Request('POST', dummyUrl); |
| 394 expect(request.toString(), 'POST $dummyUrl'); | 395 expect(request.toString(), 'POST $dummyUrl'); |
| 395 }); | 396 }); |
| 396 }); | 397 }); |
| 397 } | 398 } |
| 398 | 399 |
| OLD | NEW |