| 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 | 5 |
| 6 import "package:expect/expect.dart"; | 6 import "package:expect/expect.dart"; |
| 7 import "dart:isolate"; | 7 import "dart:isolate"; |
| 8 import "dart:io"; | 8 import "dart:io"; |
| 9 | 9 |
| 10 void test(int totalConnections, [String body]) { | 10 void test(int totalConnections, [String body]) { |
| 11 HttpServer.bind("127.0.0.1", 0).then((server) { | 11 HttpServer.bind("127.0.0.1", 0).then((server) { |
| 12 | 12 |
| 13 server.listen((HttpRequest request) { | 13 server.listen((HttpRequest request) { |
| 14 HttpResponse response = request.response; | 14 HttpResponse response = request.response; |
| 15 // Cannot mutate request headers. | 15 // Cannot mutate request headers. |
| 16 Expect.throws(() => request.headers.add("X-Request-Header", "value"), | 16 Expect.throws(() => request.headers.add("X-Request-Header", "value"), |
| 17 (e) => e is HttpException); | 17 (e) => e is HttpException); |
| 18 Expect.equals("value", request.headers.value("X-Request-Header")); | 18 Expect.equals("value", request.headers.value("X-Request-Header")); |
| 19 request.listen((_) {}, onDone: () { | 19 request.listen((_) {}, onDone: () { |
| 20 // Can still mutate response headers as long as no data has been sent. | 20 // Can still mutate response headers as long as no data has been sent. |
| 21 response.headers.add("X-Response-Header", "value"); | 21 response.headers.add("X-Response-Header", "value"); |
| 22 if (body != null) { | 22 if (body != null) { |
| 23 response.write(body); | 23 response.write(body); |
| 24 // Cannot change state or reason when data has been sent. |
| 25 Expect.throws(() => response.statusCode = 200, |
| 26 (e) => e is StateError); |
| 27 Expect.throws(() => response.reasonPhrase = "OK", |
| 28 (e) => e is StateError); |
| 24 // Cannot mutate response headers when data has been sent. | 29 // Cannot mutate response headers when data has been sent. |
| 25 Expect.throws(() => request.headers.add("X-Request-Header", "value2"), | 30 Expect.throws(() => response.headers.add("X-Request-Header", "value2")
, |
| 26 (e) => e is HttpException); | 31 (e) => e is HttpException); |
| 27 } | 32 } |
| 28 response..close(); | 33 response..close(); |
| 29 // Cannot mutate response headers when data has been sent. | 34 // Cannot change state or reason after connection is closed. |
| 30 Expect.throws(() => request.headers.add("X-Request-Header", "value3"), | 35 Expect.throws(() => response.statusCode = 200, |
| 36 (e) => e is StateError); |
| 37 Expect.throws(() => response.reasonPhrase = "OK", |
| 38 (e) => e is StateError); |
| 39 // Cannot mutate response headers after connection is closed. |
| 40 Expect.throws(() => response.headers.add("X-Request-Header", "value3"), |
| 31 (e) => e is HttpException); | 41 (e) => e is HttpException); |
| 32 }); | 42 }); |
| 33 }); | 43 }); |
| 34 | 44 |
| 35 int count = 0; | 45 int count = 0; |
| 36 HttpClient client = new HttpClient(); | 46 HttpClient client = new HttpClient(); |
| 37 for (int i = 0; i < totalConnections; i++) { | 47 for (int i = 0; i < totalConnections; i++) { |
| 38 client.get("127.0.0.1", server.port, "/") | 48 client.get("127.0.0.1", server.port, "/") |
| 39 .then((HttpClientRequest request) { | 49 .then((HttpClientRequest request) { |
| 40 if (body != null) { | 50 if (body != null) { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 }); | 82 }); |
| 73 } | 83 } |
| 74 | 84 |
| 75 }); | 85 }); |
| 76 } | 86 } |
| 77 | 87 |
| 78 void main() { | 88 void main() { |
| 79 test(5); | 89 test(5); |
| 80 test(5, "Hello and goodbye"); | 90 test(5, "Hello and goodbye"); |
| 81 } | 91 } |
| OLD | NEW |