//
// HttpListenerRequestTest.cs - Unit tests for System.Net.HttpListenerRequest
//
-// Author:
+// Authors:
// Gert Driesen (drieseng@users.sourceforge.net)
+// David Straw
//
// Copyright (C) 2007 Gert Driesen
//
namespace MonoTests.System.Net
{
[TestFixture]
-#if TARGET_JVM
- [Ignore ("The class HttpListener is not supported")]
-#endif
public class HttpListenerRequestTest
{
[Test]
ns.Close ();
listener.Close ();
}
+
+ [Test]
+ public void HttpRequestUriIsNotDecoded ()
+ {
+ HttpListener listener = HttpListener2Test.CreateAndStartListener (
+ "http://127.0.0.1:9000/RequestUriDecodeTest/");
+ NetworkStream ns = HttpListener2Test.CreateNS (9000);
+ HttpListener2Test.Send (ns, "GET /RequestUriDecodeTest/?a=b&c=d%26e HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n");
+ HttpListenerContext ctx = listener.GetContext ();
+ HttpListenerRequest request = ctx.Request;
+ 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 ();
+ }
}
}