Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mcs / class / System.ServiceModel / Test / System.ServiceModel.Description / MetadataExchangeBindingsTest.cs
index 3b533c69e36b2b802120333cc61aa54c172ecfdb..dde11f3b7d516cff6fecda3f4f49c0ae1b419351 100644 (file)
 using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
+using System.Net.Sockets;
 using System.Runtime.Serialization;
 using System.ServiceModel;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
+using System.ServiceModel.Dispatcher;
+using System.Text;
 
 using NUnit.Framework;
+using MonoTests.Helpers;
 
 namespace MonoTests.System.ServiceModel.Description
 {
@@ -54,6 +57,66 @@ namespace MonoTests.System.ServiceModel.Description
                        Assert.IsTrue (b.CreateBindingElements ().Any (be => be is TransactionFlowBindingElement), "#b2");
                        Assert.IsFalse (b.CreateBindingElements ().Any (be => be is ReliableSessionBindingElement), "#b3");
                        Assert.IsTrue (new TransactionFlowBindingElement ().TransactionProtocol == TransactionProtocol.Default, "#x1");
+                       Assert.AreEqual (MessageVersion.Soap12WSAddressing10, b.MessageVersion, "#5");
+                       Assert.AreEqual (MessageVersion.Soap12WSAddressing10, b.GetProperty<MessageVersion> (new BindingParameterCollection ()), "#6");
+
+                       var host = new ServiceHost (typeof (MetadataExchange));
+                       host.AddServiceEndpoint (typeof (IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding (), "http://localhost:" + NetworkHelpers.FindFreePort ());
+                       host.Open ();
+                       try {
+                               // it still does not rewrite MessageVersion.None. It's rather likely ServiceMetadataExtension which does overwriting.
+                               Assert.AreEqual (MessageVersion.Soap12WSAddressing10, ((ChannelDispatcher) host.ChannelDispatchers [0]).MessageVersion, "#7");
+                       } finally {
+                               host.Close ();
+                       }
+               }
+
+               [Test]
+               public void CreateMexHttpsBinding()
+               {
+                       var b = MetadataExchangeBindings.CreateMexHttpsBinding() as WSHttpBinding;
+                       Assert.IsNotNull(b, "#1");
+                       Assert.AreEqual(SecurityMode.Transport, b.Security.Mode, "#2");
+                       Assert.IsFalse(b.TransactionFlow, "#3");
+                       Assert.IsFalse(b.ReliableSession.Enabled, "#4");
+                       Assert.IsFalse(b.CreateBindingElements().Any(be => be is SecurityBindingElement), "#b1");
+                       Assert.IsTrue(b.CreateBindingElements().Any(be => be is TransactionFlowBindingElement), "#b2");
+                       Assert.IsFalse(b.CreateBindingElements().Any(be => be is ReliableSessionBindingElement), "#b3");
+                       Assert.IsTrue(new TransactionFlowBindingElement().TransactionProtocol == TransactionProtocol.Default, "#x1");
+                       Assert.AreEqual(MessageVersion.Soap12WSAddressing10, b.MessageVersion, "#5");
+                       Assert.AreEqual(MessageVersion.Soap12WSAddressing10, b.GetProperty<MessageVersion>(new BindingParameterCollection()), "#6");
+                       Assert.AreEqual(Uri.UriSchemeHttps, b.Scheme, "#8");
+
+                       var host = new ServiceHost(typeof(MetadataExchange));
+                       host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpsBinding(), "https://localhost:" + NetworkHelpers.FindFreePort ());
+                       host.Open();
+                       try
+                       {
+                               // it still does not rewrite MessageVersion.None. It's rather likely ServiceMetadataExtension which does overwriting.
+                               Assert.AreEqual(MessageVersion.Soap12WSAddressing10, ((ChannelDispatcher)host.ChannelDispatchers[0]).MessageVersion, "#7");
+                       }
+                       finally
+                       {
+                               host.Close();
+                       }
+               }
+
+               public class MetadataExchange : IMetadataExchange
+               {
+                       public Message Get (Message request)
+                       {
+                               throw new Exception ();
+                       }
+                       
+                       public IAsyncResult BeginGet (Message request, AsyncCallback callback, object state)
+                       {
+                               throw new Exception ();
+                       }
+                       
+                       public Message EndGet (IAsyncResult result)
+                       {
+                               throw new Exception ();
+                       }
                }
        }
 }