// 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", { "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", { "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(); }