[System] Test HttpRequest Uri unescaping
authorMarcos Henrich <marcos.henrich@xamarin.com>
Mon, 1 Jun 2015 10:30:33 +0000 (11:30 +0100)
committerMarcos Henrich <marcos.henrich@xamarin.com>
Mon, 1 Jun 2015 10:33:34 +0000 (11:33 +0100)
Covers #29927

mcs/class/System/Test/System.Net/HttpListenerRequestTest.cs

index 4d8564237d6a79574756ea4454e763c8b6262e4b..bc2bb3fa23d743ae75a104d6813567b2b4c8fbdb 100644 (file)
@@ -184,5 +184,31 @@ namespace MonoTests.System.Net
                        Assert.AreEqual ("/RequestUriDecodeTest/?a=b&c=d%26e", request.Url.PathAndQuery);
                        listener.Close ();
                }
+
+               [Test] // #29927
+               public void HttpRequestUriUnescape ()
+               {
+                       var prefix = "http://localhost:12345/";
+                       var key = "Product/1";
+
+                       var expectedUrl = prefix + key + "/";
+                       var rawUrl = prefix + Uri.EscapeDataString (key) + "/";
+
+                       HttpListener listener = new HttpListener ();
+                       listener.Prefixes.Add (prefix);
+                       listener.Start ();
+
+                       var contextTask = listener.GetContextAsync ();
+
+                       var request = (HttpWebRequest) WebRequest.Create (rawUrl);
+                       request.GetResponseAsync ();
+
+                       if(!contextTask.Wait (1000))
+                               Assert.Fail ("Timeout");
+
+                       Assert.AreEqual (expectedUrl, contextTask.Result.Request.Url.AbsoluteUri);
+
+                       listener.Close ();
+               }
        }
 }