[System*] Throw a PlatformNotSupported exception when using the networking stack...
[mono.git] / mcs / class / System.Net.Http / Test / System.Net.Http / HttpClientHandlerTest.cs
index e02db43791908b370e40341f76108c842f5d4f8a..3f06e1c316da8440c0a8701439deb9e5ee18b770 100644 (file)
@@ -38,7 +38,32 @@ namespace MonoTests.System.Net.Http
        [TestFixture]
        public class HttpClientHandlerTest
        {
+               class Proxy : IWebProxy
+               {
+                       public ICredentials Credentials {
+                               get {
+                                       throw new NotImplementedException ();
+                               }
+                               set {
+                                       throw new NotImplementedException ();
+                               }
+                       }
+
+                       public Uri GetProxy (Uri destination)
+                       {
+                               throw new NotImplementedException ();
+                       }
+
+                       public bool IsBypassed (Uri host)
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
                [Test]
+#if FEATURE_NO_BSD_SOCKETS
+               [ExpectedException (typeof (PlatformNotSupportedException))]
+#endif
                public void Properties_Defaults ()
                {
                        var h = new HttpClientHandler ();
@@ -48,7 +73,7 @@ namespace MonoTests.System.Net.Http
                        Assert.AreEqual (4096, h.CookieContainer.MaxCookieSize, "#3b");
                        Assert.AreEqual (null, h.Credentials, "#4");
                        Assert.AreEqual (50, h.MaxAutomaticRedirections, "#5");
-                       Assert.AreEqual (0x10000, h.MaxRequestContentBufferSize, "#6");
+                       Assert.AreEqual (int.MaxValue, h.MaxRequestContentBufferSize, "#6");
                        Assert.IsFalse (h.PreAuthenticate, "#7");
                        Assert.IsNull (h.Proxy, "#8");
                        Assert.IsTrue (h.SupportsAutomaticDecompression, "#9");
@@ -57,9 +82,13 @@ namespace MonoTests.System.Net.Http
                        Assert.IsTrue (h.UseCookies, "#12");
                        Assert.IsFalse (h.UseDefaultCredentials, "#13");
                        Assert.IsTrue (h.UseProxy, "#14");
+                       Assert.AreEqual (ClientCertificateOption.Manual, h.ClientCertificateOptions, "#15");
                }
 
                [Test]
+#if FEATURE_NO_BSD_SOCKETS
+               [ExpectedException (typeof (PlatformNotSupportedException))]
+#endif
                public void Properties_Invalid ()
                {
                        var h = new HttpClientHandler ();
@@ -75,6 +104,44 @@ namespace MonoTests.System.Net.Http
                        } catch (ArgumentOutOfRangeException) {
                        }
 
+                       h.UseProxy = false;
+                       try {
+                               h.Proxy = new Proxy ();
+                               Assert.Fail ("#3");
+                       } catch (InvalidOperationException) {
+                       }
+               }
+
+               [Test]
+#if FEATURE_NO_BSD_SOCKETS
+               [ExpectedException (typeof (PlatformNotSupportedException))]
+#endif
+               public void Properties_AfterClientCreation ()
+               {
+                       var h = new HttpClientHandler ();
+                       h.AllowAutoRedirect = true;
+
+                       // We may modify properties after creating the HttpClient.
+                       using (var c = new HttpClient (h, true)) {
+                               h.AllowAutoRedirect = false;
+                       }
+               }
+
+               [Test]
+#if FEATURE_NO_BSD_SOCKETS
+               [ExpectedException (typeof (PlatformNotSupportedException))]
+#endif
+               public void Disposed ()
+               {
+                       var h = new HttpClientHandler ();
+                       h.Dispose ();
+                       var c = new HttpClient (h);
+                       try {
+                               c.GetAsync ("http://google.com").Wait ();
+                               Assert.Fail ("#1");
+                       } catch (AggregateException e) {
+                               Assert.IsTrue (e.InnerException is ObjectDisposedException, "#2");
+                       }
                }
        }
 }