2009-04-14 Sebastien Pouliot <sebastien@ximian.com>
authorSebastien Pouliot <sebastien@ximian.com>
Tue, 14 Apr 2009 17:35:01 +0000 (17:35 -0000)
committerSebastien Pouliot <sebastien@ximian.com>
Tue, 14 Apr 2009 17:35:01 +0000 (17:35 -0000)
* UriTest2.cs: More test cases for the handling of %2f and %5c

svn path=/trunk/mcs/; revision=131682

mcs/class/System/Test/System/ChangeLog
mcs/class/System/Test/System/UriTest2.cs

index eb136a703f0f55895b0a3abd5012375151265b74..2dbbf60d14e8ed0f2ee72a8fc11af9058aade190 100644 (file)
@@ -1,3 +1,7 @@
+2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * UriTest2.cs: More test cases for the handling of %2f and %5c
+
 2009-02-18  Atsushi Enomoto  <atsushi@ximian.com>
 
        * UriTest.cs : added test for windows local path with '\' (used in
index 51d527857a5ee735bfb9ca11ac7112e697eda46e..0c14221783b6ff519787998e00a8100deac468ec 100644 (file)
@@ -236,5 +236,165 @@ TextWriter sw = Console.Out;
                {\r
                        new Uri ("http://127.0.0.1::::/");\r
                }\r
+#if NET_2_0\r
+               [Test]\r
+               public void File ()\r
+               {\r
+                       string s = "file:///dir1%2f..%2fdir%2fapp.xap#header";\r
+                       Uri uri = new Uri (s);\r
+                       Assert.AreEqual ("/dir/app.xap", uri.AbsolutePath, "AbsolutePath");\r
+                       // default port is removed\r
+                       Assert.AreEqual ("file:///dir/app.xap#header", uri.AbsoluteUri, "AbsoluteUri");\r
+                       Assert.AreEqual (String.Empty, uri.DnsSafeHost, "DnsSafeHost");\r
+                       Assert.AreEqual ("#header", uri.Fragment, "Fragment");\r
+                       Assert.AreEqual (String.Empty, uri.Host, "Host");\r
+                       Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");\r
+                       Assert.IsFalse (uri.IsUnc, "IsUnc");\r
+                       Assert.AreEqual ("/dir/app.xap", uri.LocalPath, "LocalPath");\r
+                       Assert.AreEqual (s, uri.OriginalString, "OriginalString");\r
+                       Assert.AreEqual (-1, uri.Port, "Port");\r
+                       Assert.AreEqual (String.Empty, uri.Query, "Query");\r
+                       Assert.AreEqual ("file", uri.Scheme, "Scheme");\r
+                       Assert.IsFalse (uri.UserEscaped, "UserEscaped");\r
+                       Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");\r
+                       Assert.AreEqual (uri.AbsoluteUri, uri.ToString (), "ToString");\r
+               }\r
+\r
+               [Test]\r
+               public void HttpWithDefaultPort ()\r
+               {\r
+                       string s = "HTTP://host.domain.com:80/app.xap";\r
+                       Uri uri = new Uri (s);\r
+                       Assert.AreEqual ("/app.xap", uri.AbsolutePath, "AbsolutePath");\r
+                       // default port is removed\r
+                       Assert.AreEqual ("http://host.domain.com/app.xap", uri.AbsoluteUri, "AbsoluteUri");\r
+                       Assert.AreEqual ("host.domain.com", uri.DnsSafeHost, "DnsSafeHost");\r
+                       Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");\r
+                       Assert.AreEqual ("host.domain.com", uri.Host, "Host");\r
+                       Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");\r
+                       Assert.IsFalse (uri.IsUnc, "IsUnc");\r
+                       Assert.AreEqual ("/app.xap", uri.LocalPath, "LocalPath");\r
+                       Assert.AreEqual (s, uri.OriginalString, "OriginalString");\r
+                       Assert.AreEqual (80, uri.Port, "Port");\r
+                       Assert.AreEqual (String.Empty, uri.Query, "Query");\r
+                       Assert.AreEqual ("http", uri.Scheme, "Scheme");\r
+                       Assert.IsFalse (uri.UserEscaped, "UserEscaped");\r
+                       Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");\r
+                       Assert.AreEqual (uri.AbsoluteUri, uri.ToString (), "ToString");\r
+               }\r
+\r
+               [Test]\r
+               public void HttpWithoutPort ()\r
+               {\r
+                       string s = "Http://host.DOMAIN.com/dir/app.xap#options";\r
+                       Uri uri = new Uri (s);\r
+                       Assert.AreEqual ("/dir/app.xap", uri.AbsolutePath, "AbsolutePath");\r
+                       Assert.AreEqual ("http://host.domain.com/dir/app.xap#options", uri.AbsoluteUri, "AbsoluteUri");\r
+                       Assert.AreEqual ("host.domain.com", uri.DnsSafeHost, "DnsSafeHost");\r
+                       Assert.AreEqual ("#options", uri.Fragment, "Fragment");\r
+                       Assert.AreEqual ("host.domain.com", uri.Host, "Host");\r
+                       Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");\r
+                       Assert.IsFalse (uri.IsUnc, "IsUnc");\r
+                       Assert.AreEqual ("/dir/app.xap", uri.LocalPath, "LocalPath");\r
+                       Assert.AreEqual (s, uri.OriginalString, "OriginalString");\r
+                       Assert.AreEqual (80, uri.Port, "Port");\r
+                       Assert.AreEqual (String.Empty, uri.Query, "Query");\r
+                       Assert.AreEqual ("http", uri.Scheme, "Scheme");\r
+                       Assert.IsFalse (uri.UserEscaped, "UserEscaped");\r
+                       Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");\r
+                       Assert.AreEqual (uri.AbsoluteUri, uri.ToString (), "ToString");\r
+               }\r
+\r
+               [Test]\r
+               public void HttpWithNonStandardPort ()\r
+               {\r
+                       string s = "http://monkey:s3kr3t@HOST.domain.Com:8080/dir/../app.xap?option=1";\r
+                       Uri uri = new Uri (s);\r
+                       Assert.AreEqual ("/app.xap", uri.AbsolutePath, "AbsolutePath");\r
+                       // non-standard port is present\r
+                       Assert.AreEqual ("http://monkey:s3kr3t@host.domain.com:8080/app.xap?option=1", uri.AbsoluteUri, "AbsoluteUri");\r
+                       Assert.AreEqual ("host.domain.com", uri.DnsSafeHost, "DnsSafeHost");\r
+                       Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");\r
+                       Assert.AreEqual ("host.domain.com", uri.Host, "Host");\r
+                       Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");\r
+                       Assert.IsFalse (uri.IsUnc, "IsUnc");\r
+                       Assert.AreEqual ("/app.xap", uri.LocalPath, "LocalPath");\r
+                       Assert.AreEqual (s, uri.OriginalString, "OriginalString");\r
+                       Assert.AreEqual (8080, uri.Port, "Port");\r
+                       Assert.AreEqual ("?option=1", uri.Query, "Query");\r
+                       Assert.AreEqual ("http", uri.Scheme, "Scheme");\r
+                       Assert.IsFalse (uri.UserEscaped, "UserEscaped");\r
+                       Assert.AreEqual ("monkey:s3kr3t", uri.UserInfo, "UserInfo");\r
+                       Assert.AreEqual (uri.AbsoluteUri, uri.ToString (), "ToString");\r
+               }\r
+\r
+               [Test]\r
+               public void HttpsWithDefaultPort ()\r
+               {\r
+                       string s = "httpS://host.domain.com:443/";\r
+                       Uri uri = new Uri (s);\r
+                       Assert.AreEqual ("/", uri.AbsolutePath, "AbsolutePath");\r
+                       // default port is removed\r
+                       Assert.AreEqual ("https://host.domain.com/", uri.AbsoluteUri, "AbsoluteUri");\r
+                       Assert.AreEqual ("host.domain.com", uri.DnsSafeHost, "DnsSafeHost");\r
+                       Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");\r
+                       Assert.AreEqual ("host.domain.com", uri.Host, "Host");\r
+                       Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");\r
+                       Assert.IsFalse (uri.IsUnc, "IsUnc");\r
+                       Assert.AreEqual ("/", uri.LocalPath, "LocalPath");\r
+                       Assert.AreEqual (s, uri.OriginalString, "OriginalString");\r
+                       Assert.AreEqual (443, uri.Port, "Port");\r
+                       Assert.AreEqual (String.Empty, uri.Query, "Query");\r
+                       Assert.AreEqual ("https", uri.Scheme, "Scheme");\r
+                       Assert.IsFalse (uri.UserEscaped, "UserEscaped");\r
+                       Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");\r
+                       Assert.AreEqual (uri.AbsoluteUri, uri.ToString (), "ToString");\r
+               }\r
+\r
+               [Test]\r
+               public void HttpsWithoutPort ()\r
+               {\r
+                       string s = "Https://host.DOMAIN.com/dir%2fapp.xap#";\r
+                       Uri uri = new Uri (s);\r
+                       Assert.AreEqual ("/dir/app.xap", uri.AbsolutePath, "AbsolutePath");\r
+                       Assert.AreEqual ("https://host.domain.com/dir/app.xap#", uri.AbsoluteUri, "AbsoluteUri");\r
+                       Assert.AreEqual ("host.domain.com", uri.DnsSafeHost, "DnsSafeHost");\r
+                       Assert.AreEqual ("#", uri.Fragment, "Fragment");\r
+                       Assert.AreEqual ("host.domain.com", uri.Host, "Host");\r
+                       Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");\r
+                       Assert.IsFalse (uri.IsUnc, "IsUnc");\r
+                       Assert.AreEqual ("/dir/app.xap", uri.LocalPath, "LocalPath");\r
+                       Assert.AreEqual (s, uri.OriginalString, "OriginalString");\r
+                       Assert.AreEqual (443, uri.Port, "Port");\r
+                       Assert.AreEqual (String.Empty, uri.Query, "Query");\r
+                       Assert.AreEqual ("https", uri.Scheme, "Scheme");\r
+                       Assert.IsFalse (uri.UserEscaped, "UserEscaped");\r
+                       Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");\r
+                       Assert.AreEqual (uri.AbsoluteUri, uri.ToString (), "ToString");\r
+               }\r
+\r
+               [Test]\r
+               public void HttpsWithNonStandardPort ()\r
+               {\r
+                       string s = "https://monkey:s3kr3t@HOST.domain.Com:4430/dir/..%5Capp.xap?";\r
+                       Uri uri = new Uri (s);\r
+                       Assert.AreEqual ("/app.xap", uri.AbsolutePath, "AbsolutePath");\r
+                       // non-standard port is present\r
+                       Assert.AreEqual ("https://monkey:s3kr3t@host.domain.com:4430/app.xap?", uri.AbsoluteUri, "AbsoluteUri");\r
+                       Assert.AreEqual ("host.domain.com", uri.DnsSafeHost, "DnsSafeHost");\r
+                       Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");\r
+                       Assert.AreEqual ("host.domain.com", uri.Host, "Host");\r
+                       Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");\r
+                       Assert.IsFalse (uri.IsUnc, "IsUnc");\r
+                       Assert.AreEqual ("/app.xap", uri.LocalPath, "LocalPath");\r
+                       Assert.AreEqual (s, uri.OriginalString, "OriginalString");\r
+                       Assert.AreEqual (4430, uri.Port, "Port");\r
+                       Assert.AreEqual ("?", uri.Query, "Query");\r
+                       Assert.AreEqual ("https", uri.Scheme, "Scheme");\r
+                       Assert.IsFalse (uri.UserEscaped, "UserEscaped");\r
+                       Assert.AreEqual ("monkey:s3kr3t", uri.UserInfo, "UserInfo");\r
+                       Assert.AreEqual (uri.AbsoluteUri, uri.ToString (), "ToString");\r
+               }\r
+#endif\r
        }\r
 }\r