Index: tests/standalone/io/http_requested_uri_test.dart |
diff --git a/tests/standalone/io/http_requested_uri_test.dart b/tests/standalone/io/http_requested_uri_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e93f0eec36d66b4df6dcaed0f3f09219f203aab2 |
--- /dev/null |
+++ b/tests/standalone/io/http_requested_uri_test.dart |
@@ -0,0 +1,49 @@ |
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+import "package:expect/expect.dart"; |
+import "package:async_helper/async_helper.dart"; |
+import "dart:async"; |
+import "dart:io"; |
+ |
+const PATH = '/path?a=b#c'; |
+ |
+void test(String expected, Map headers) { |
+ asyncStart(); |
+ HttpServer.bind("127.0.0.1", 0).then((server) { |
+ expected = expected.replaceAll('%PORT', server.port.toString()); |
+ server.listen((request) { |
+ Expect.equals("$expected$PATH", |
+ request.requestedUri.toString()); |
+ request.response.close(); |
+ }); |
+ HttpClient client = new HttpClient(); |
+ client.get("localhost", server.port, PATH) |
+ .then((request) { |
+ for (var v in headers.keys) { |
+ if (headers[v] != null) { |
+ request.headers.set(v, headers[v]); |
+ } else { |
+ request.headers.removeAll(v); |
+ } |
+ } |
+ return request.close(); |
+ }) |
+ .then((response) => response.drain()) |
+ .then((_) { |
+ server.close(); |
+ asyncEnd(); |
+ }); |
+ }); |
+} |
+ |
+ |
+void main() { |
+ test('http://localhost:%PORT', {}); |
+ test('https://localhost:%PORT', {'x-forwarded-proto': 'https'}); |
+ test('ws://localhost:%PORT', {'x-forwarded-proto': 'ws'}); |
+ test('http://my-host:321', {'x-forwarded-host': 'my-host:321'}); |
+ test('http://127.0.0.1:%PORT', {'host': null}); |
+} |
+ |