2 // MetadataResolverTest.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2010 Novell, Inc. http://www.novell.com
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 using System
.Collections
.Generic
;
32 using System
.Net
.Sockets
;
33 using System
.Runtime
.Serialization
;
34 using System
.ServiceModel
;
35 using System
.ServiceModel
.Channels
;
36 using System
.ServiceModel
.Description
;
37 using System
.ServiceModel
.Dispatcher
;
40 using NUnit
.Framework
;
42 namespace MonoTests
.System
.ServiceModel
.Description
45 public class MetadataExchangeBindingsTest
47 Uri
CreateUri (string uriString
)
49 var uri
= new Uri (uriString
);
50 var l
= new TcpListener (uri
.Port
);
57 public void CreateMexHttpBinding ()
59 var b
= MetadataExchangeBindings
.CreateMexHttpBinding () as WSHttpBinding
;
60 Assert
.IsNotNull (b
, "#1");
61 Assert
.AreEqual (SecurityMode
.None
, b
.Security
.Mode
, "#2");
62 Assert
.IsFalse (b
.TransactionFlow
, "#3");
63 Assert
.IsFalse (b
.ReliableSession
.Enabled
, "#4");
64 Assert
.IsFalse (b
.CreateBindingElements ().Any (be
=> be
is SecurityBindingElement
), "#b1");
65 Assert
.IsTrue (b
.CreateBindingElements ().Any (be
=> be
is TransactionFlowBindingElement
), "#b2");
66 Assert
.IsFalse (b
.CreateBindingElements ().Any (be
=> be
is ReliableSessionBindingElement
), "#b3");
67 Assert
.IsTrue (new TransactionFlowBindingElement ().TransactionProtocol
== TransactionProtocol
.Default
, "#x1");
68 Assert
.AreEqual (MessageVersion
.Soap12WSAddressing10
, b
.MessageVersion
, "#5");
69 Assert
.AreEqual (MessageVersion
.Soap12WSAddressing10
, b
.GetProperty
<MessageVersion
> (new BindingParameterCollection ()), "#6");
71 var host
= new ServiceHost (typeof (MetadataExchange
));
72 host
.AddServiceEndpoint (typeof (IMetadataExchange
), MetadataExchangeBindings
.CreateMexHttpBinding (), CreateUri ("http://localhost:30158"));
75 // it still does not rewrite MessageVersion.None. It's rather likely ServiceMetadataExtension which does overwriting.
76 Assert
.AreEqual (MessageVersion
.Soap12WSAddressing10
, ((ChannelDispatcher
) host
.ChannelDispatchers
[0]).MessageVersion
, "#7");
83 public void CreateMexHttpsBinding()
85 var b
= MetadataExchangeBindings
.CreateMexHttpsBinding() as WSHttpBinding
;
86 Assert
.IsNotNull(b
, "#1");
87 Assert
.AreEqual(SecurityMode
.Transport
, b
.Security
.Mode
, "#2");
88 Assert
.IsFalse(b
.TransactionFlow
, "#3");
89 Assert
.IsFalse(b
.ReliableSession
.Enabled
, "#4");
90 Assert
.IsFalse(b
.CreateBindingElements().Any(be
=> be
is SecurityBindingElement
), "#b1");
91 Assert
.IsTrue(b
.CreateBindingElements().Any(be
=> be
is TransactionFlowBindingElement
), "#b2");
92 Assert
.IsFalse(b
.CreateBindingElements().Any(be
=> be
is ReliableSessionBindingElement
), "#b3");
93 Assert
.IsTrue(new TransactionFlowBindingElement().TransactionProtocol
== TransactionProtocol
.Default
, "#x1");
94 Assert
.AreEqual(MessageVersion
.Soap12WSAddressing10
, b
.MessageVersion
, "#5");
95 Assert
.AreEqual(MessageVersion
.Soap12WSAddressing10
, b
.GetProperty
<MessageVersion
>(new BindingParameterCollection()), "#6");
96 Assert
.AreEqual(Uri
.UriSchemeHttps
, b
.Scheme
, "#8");
98 var host
= new ServiceHost(typeof(MetadataExchange
));
99 host
.AddServiceEndpoint(typeof(IMetadataExchange
), MetadataExchangeBindings
.CreateMexHttpsBinding(), CreateUri("https://localhost:30158"));
103 // it still does not rewrite MessageVersion.None. It's rather likely ServiceMetadataExtension which does overwriting.
104 Assert
.AreEqual(MessageVersion
.Soap12WSAddressing10
, ((ChannelDispatcher
)host
.ChannelDispatchers
[0]).MessageVersion
, "#7");
112 public class MetadataExchange
: IMetadataExchange
114 public Message
Get (Message request
)
116 throw new Exception ();
119 public IAsyncResult
BeginGet (Message request
, AsyncCallback callback
, object state
)
121 throw new Exception ();
124 public Message
EndGet (IAsyncResult result
)
126 throw new Exception ();