Migrated http_requested_uri_test from SDK. (#41)
* Migrated http_requested_uri_test from SDK.
* Update http_requested_uri_test.dart
diff --git a/test/http_requested_uri_test.dart b/test/http_requested_uri_test.dart
new file mode 100644
index 0000000..ad2faaf
--- /dev/null
+++ b/test/http_requested_uri_test.dart
@@ -0,0 +1,53 @@
+// Copyright (c) 2018, 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 "dart:async";
+
+import 'package:http_io/http_io.dart';
+import 'package:test/test.dart';
+
+const sendPath = '/path?a=b#c';
+const expectedPath = '/path?a=b';
+
+Future<Null> runTest(String expected, Map headers) {
+ final completer = new Completer<Null>();
+ HttpServer.bind("localhost", 0).then((server) {
+ expected = expected.replaceAll('%PORT', server.port.toString());
+ server.listen((request) {
+ expect("$expected$expectedPath", equals(request.requestedUri.toString()));
+ request.response.close();
+ });
+ HttpClient client = new HttpClient();
+ client
+ .get("localhost", server.port, sendPath)
+ .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();
+ completer.complete();
+ });
+ });
+ return completer.future;
+}
+
+void main() {
+ test('requestedUri1', () => runTest('http://localhost:%PORT', {}));
+ test('requestedUri2',
+ () => runTest('https://localhost:%PORT', {'x-forwarded-proto': 'https'}));
+ test('requestedUri3',
+ () => runTest('ws://localhost:%PORT', {'x-forwarded-proto': 'ws'}));
+ test('requestedUri4',
+ () => runTest('http://my-host:321', {'x-forwarded-host': 'my-host:321'}));
+ test(
+ 'requestedUri5', () => runTest('http://localhost:%PORT', {'host': null}));
+}