| // Copyright (c) 2012, 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"; |
| |
| void testHttpUri() { |
| void check(Uri uri, String expected) { |
| Expect.equals(expected, uri.toString()); |
| } |
| |
| check(new Uri.http("", ""), "http:"); |
| check(new Uri.http("@:", ""), "http://"); |
| check(new Uri.http("@:8080", ""), "http://:8080"); |
| check(new Uri.http("@host:", ""), "http://host"); |
| check(new Uri.http("@host:", ""), "http://host"); |
| check(new Uri.http("xxx:yyy@host:8080", ""), "http://xxx:yyy@host:8080"); |
| check(new Uri.http("host", "a"), "http://host/a"); |
| check(new Uri.http("host", "/a"), "http://host/a"); |
| check(new Uri.http("host", "a/"), "http://host/a/"); |
| check(new Uri.http("host", "/a/"), "http://host/a/"); |
| check(new Uri.http("host", "a/b"), "http://host/a/b"); |
| check(new Uri.http("host", "/a/b"), "http://host/a/b"); |
| check(new Uri.http("host", "a/b/"), "http://host/a/b/"); |
| check(new Uri.http("host", "/a/b/"), "http://host/a/b/"); |
| check(new Uri.http("host", "a b"), "http://host/a%20b"); |
| check(new Uri.http("host", "/a b"), "http://host/a%20b"); |
| check(new Uri.http("host", "/a b/"), "http://host/a%20b/"); |
| check(new Uri.http("host", "/a%2F"), "http://host/a%252F"); |
| check(new Uri.http("host", "/a%2F/"), "http://host/a%252F/"); |
| check(new Uri.http("host", "/a/b", {"c": "d"}), "http://host/a/b?c=d"); |
| check( |
| new Uri.http("host", "/a/b", {"c=": "&d"}), "http://host/a/b?c%3D=%26d"); |
| check(new Uri.http("[::]", "a"), "http://[::]/a"); |
| check(new Uri.http("[::127.0.0.1]", "a"), "http://[::127.0.0.1]/a"); |
| check(new Uri.http('[fe80::8eae:4c4d:fee9:8434%rename3]', ''), |
| 'http://[fe80::8eae:4c4d:fee9:8434%25rename3]'); |
| check(new Uri.http('[ff02::1%1%41]', ''), 'http://[ff02::1%251a]'); |
| check(new Uri.http('[ff02::1%321]', ''), 'http://[ff02::1%25321]'); |
| check(new Uri.http('[ff02::1%%321]', ''), 'http://[ff02::1%2521]'); |
| } |
| |
| void testHttpsUri() { |
| void check(Uri uri, String expected) { |
| Expect.equals(expected, uri.toString()); |
| } |
| |
| check(new Uri.https("", ""), "https:"); |
| check(new Uri.https("@:", ""), "https://"); |
| check(new Uri.https("@:8080", ""), "https://:8080"); |
| check(new Uri.https("@host:", ""), "https://host"); |
| check(new Uri.https("@host:", ""), "https://host"); |
| check(new Uri.https("xxx:yyy@host:8080", ""), "https://xxx:yyy@host:8080"); |
| check(new Uri.https("host", "a"), "https://host/a"); |
| check(new Uri.https("host", "/a"), "https://host/a"); |
| check(new Uri.https("host", "a/"), "https://host/a/"); |
| check(new Uri.https("host", "/a/"), "https://host/a/"); |
| check(new Uri.https("host", "a/b"), "https://host/a/b"); |
| check(new Uri.https("host", "/a/b"), "https://host/a/b"); |
| check(new Uri.https("host", "a/b/"), "https://host/a/b/"); |
| check(new Uri.https("host", "/a/b/"), "https://host/a/b/"); |
| check(new Uri.https("host", "a b"), "https://host/a%20b"); |
| check(new Uri.https("host", "/a b"), "https://host/a%20b"); |
| check(new Uri.https("host", "/a b/"), "https://host/a%20b/"); |
| check(new Uri.https("host", "/a%2F"), "https://host/a%252F"); |
| check(new Uri.https("host", "/a%2F/"), "https://host/a%252F/"); |
| check(new Uri.https("host", "/a/b", {"c": "d"}), "https://host/a/b?c=d"); |
| check(new Uri.https("host", "/a/b", {"c=": "&d"}), |
| "https://host/a/b?c%3D=%26d"); |
| check(new Uri.https("[::]", "a"), "https://[::]/a"); |
| check(new Uri.https("[::127.0.0.1]", "a"), "https://[::127.0.0.1]/a"); |
| } |
| |
| void testResolveHttpScheme() { |
| String s = "//myserver:1234/path/some/thing"; |
| Uri uri = Uri.parse(s); |
| Uri http = new Uri(scheme: "http"); |
| Uri https = new Uri(scheme: "https"); |
| Expect.equals("http:$s", http.resolveUri(uri).toString()); |
| Expect.equals("https:$s", https.resolveUri(uri).toString()); |
| } |
| |
| void testQuery() { |
| var uri = Uri.http("example.com", "a/b", <String, dynamic>{ |
| "a": "b", |
| "c": ["d", "e"] |
| }); |
| Expect.equals(uri.toString(), "http://example.com/a/b?a=b&c=d&c=e"); |
| Expect.listEquals(uri.queryParametersAll["c"]!, ["d", "e"]); |
| |
| uri = Uri.https("example.com", "a/b", <String, dynamic>{ |
| "a": "b", |
| "c": ["d", "e"] |
| }); |
| Expect.equals(uri.toString(), "https://example.com/a/b?a=b&c=d&c=e"); |
| Expect.listEquals(uri.queryParametersAll["c"]!, ["d", "e"]); |
| |
| uri = Uri.http("example.com", "a/b", { |
| "a b c": ["d e", "f g"] |
| }); |
| Expect.equals(uri.toString(), "http://example.com/a/b?a+b+c=d+e&a+b+c=f+g"); |
| uri = Uri.https("example.com", "a/b", { |
| "a b c": ["d e", "f g"] |
| }); |
| Expect.equals(uri.toString(), "https://example.com/a/b?a+b+c=d+e&a+b+c=f+g"); |
| } |
| |
| main() { |
| testHttpUri(); |
| testHttpsUri(); |
| testResolveHttpScheme(); |
| testQuery(); |
| } |