implemented large parts of WCF standard endpoints and configuration support.
[mono.git] / mcs / class / System.ServiceModel / Test / System.ServiceModel.Configuration / CustomBindingElementTest.cs
1 //
2 // AddressHeaderCollectionElementTest.cs
3 //
4 // Author:
5 //      Igor Zelmanovich <igorz@mainsoft.com>
6 //
7 // Copyright (C) 2008 Mainsoft, Inc.  http://www.mainsoft.com
8 //
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:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
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.
27 //
28
29 using System;
30 using System.Collections.Generic;
31 using System.Text;
32 using NUnit.Framework;
33 using System.Configuration;
34 using System.ServiceModel.Configuration;
35 using System.ServiceModel.Channels;
36 using System.Net;
37 using System.ServiceModel;
38 using System.Net.Security;
39
40 namespace MonoTests.System.ServiceModel.Configuration
41 {
42         [TestFixture]
43         public class CustomBindingElementTest
44         {
45                 CustomBindingCollectionElement OpenConfig () {
46                         ServiceModelSectionGroup config = (ServiceModelSectionGroup) ConfigurationManager.OpenExeConfiguration ("Test/config/customBinding").GetSectionGroup ("system.serviceModel");
47                         Assert.AreEqual (7, config.Bindings.CustomBinding.Bindings.Count, "CustomBinding count");
48                         return config.Bindings.CustomBinding;
49                 }
50
51                 T GetElement<T> (int index) where T : BindingElementExtensionElement {
52                         CustomBindingElement binding = OpenConfig ().Bindings [index];
53                         T element = (T) binding [typeof (T)];
54                         Assert.IsNotNull (element, typeof (T).Name + " is not exist in collection.");
55                         return element;
56                 }
57
58                 [Test]
59                 public void CustomBindingElement () {
60                         CustomBindingElement binding = OpenConfig ().Bindings [0];
61
62                         Assert.AreEqual ("CustomBinding_1", binding.Name, "Name");
63                         Assert.AreEqual (new TimeSpan (0, 2, 0), binding.CloseTimeout, "CloseTimeout");
64                         Assert.AreEqual (new TimeSpan (0, 2, 0), binding.OpenTimeout, "OpenTimeout");
65                         Assert.AreEqual (new TimeSpan (0, 20, 0), binding.ReceiveTimeout, "ReceiveTimeout");
66                         Assert.AreEqual (new TimeSpan (0, 2, 0), binding.SendTimeout, "SendTimeout");
67
68                 }
69
70                 [Test]
71                 public void BinaryMessageEncodingElement () {
72
73                         BinaryMessageEncodingElement binaryMessageEncoding = GetElement<BinaryMessageEncodingElement> (0);
74
75                         Assert.AreEqual (typeof (BinaryMessageEncodingBindingElement), binaryMessageEncoding.BindingElementType, "BindingElementType");
76                         Assert.AreEqual ("binaryMessageEncoding", binaryMessageEncoding.ConfigurationElementName, "ConfigurationElementName");
77
78                         Assert.AreEqual (128, binaryMessageEncoding.MaxReadPoolSize, "MaxReadPoolSize");
79                         Assert.AreEqual (1024, binaryMessageEncoding.MaxSessionSize, "MaxSessionSize");
80                         Assert.AreEqual (32, binaryMessageEncoding.MaxWritePoolSize, "MaxWritePoolSize");
81                         Assert.AreEqual (1024, binaryMessageEncoding.ReaderQuotas.MaxArrayLength, "ReaderQuotas.MaxArrayLength");
82                         Assert.AreEqual (1024, binaryMessageEncoding.ReaderQuotas.MaxBytesPerRead, "ReaderQuotas.MaxBytesPerRead");
83                         Assert.AreEqual (1024, binaryMessageEncoding.ReaderQuotas.MaxDepth, "ReaderQuotas.MaxDepth");
84                         Assert.AreEqual (1024, binaryMessageEncoding.ReaderQuotas.MaxNameTableCharCount, "ReaderQuotas.MaxNameTableCharCount");
85                         Assert.AreEqual (1024, binaryMessageEncoding.ReaderQuotas.MaxStringContentLength, "ReaderQuotas.MaxStringContentLength");
86                 }
87
88                 [Test]
89                 public void CompositeDuplexElement () {
90                         CompositeDuplexElement element = GetElement<CompositeDuplexElement> (0);
91
92                         Assert.AreEqual (typeof (CompositeDuplexBindingElement), element.BindingElementType, "BindingElementType");
93                         Assert.AreEqual ("compositeDuplex", element.ConfigurationElementName, "ConfigurationElementName");
94
95                         Assert.AreEqual ("http://client.base.address", element.ClientBaseAddress.OriginalString, "ClientBaseAddress");
96                 }
97
98                 [Test]
99                 public void OneWayElement () {
100                         OneWayElement element = GetElement<OneWayElement> (0);
101
102                         Assert.AreEqual (typeof (OneWayBindingElement), element.BindingElementType, "BindingElementType");
103                         Assert.AreEqual ("oneWay", element.ConfigurationElementName, "ConfigurationElementName");
104
105                         Assert.AreEqual (5, element.MaxAcceptedChannels, "MaxAcceptedChannels");
106                         Assert.AreEqual (true, element.PacketRoutable, "PacketRoutable");
107
108                         Assert.AreEqual (new TimeSpan (0, 1, 0), element.ChannelPoolSettings.IdleTimeout, "ChannelPoolSettings.IdleTimeout");
109                         Assert.AreEqual (new TimeSpan (0, 12, 0), element.ChannelPoolSettings.LeaseTimeout, "ChannelPoolSettings.LeaseTimeout");
110                         Assert.AreEqual (5, element.ChannelPoolSettings.MaxOutboundChannelsPerEndpoint, "ChannelPoolSettings.MxOutboundChannelsPerEndpoint");
111                 }
112
113                 [Test]
114                 public void HttpTransportElement () {
115                         HttpTransportElement element = GetElement<HttpTransportElement> (0);
116
117                         Assert.AreEqual (typeof (HttpTransportBindingElement), element.BindingElementType, "BindingElementType");
118                         Assert.AreEqual ("httpTransport", element.ConfigurationElementName, "ConfigurationElementName");
119
120                         Assert.AreEqual (true, element.ManualAddressing, "ManualAddressing");
121                         Assert.AreEqual (262144, element.MaxBufferPoolSize, "MaxBufferPoolSize");
122                         Assert.AreEqual (32768, element.MaxReceivedMessageSize, "MaxReceivedMessageSize");
123                         Assert.AreEqual (true, element.AllowCookies, "AllowCookies");
124                         Assert.AreEqual (AuthenticationSchemes.None, element.AuthenticationScheme, "AuthenticationScheme");
125                         Assert.AreEqual (true, element.BypassProxyOnLocal, "BypassProxyOnLocal");
126                         Assert.AreEqual (HostNameComparisonMode.Exact, element.HostNameComparisonMode, "HostNameComparisonMode");
127                         Assert.AreEqual (false, element.KeepAliveEnabled, "KeepAliveEnabled");
128                         Assert.AreEqual (32768, element.MaxBufferSize, "MaxBufferSize");
129                         Assert.AreEqual ("http://proxy.address", element.ProxyAddress.OriginalString, "ProxyAddress");
130                         Assert.AreEqual (AuthenticationSchemes.None, element.ProxyAuthenticationScheme, "ProxyAuthenticationScheme");
131                         Assert.AreEqual ("Realm", element.Realm, "Realm");
132                         Assert.AreEqual (TransferMode.Streamed, element.TransferMode, "TransferMode");
133                         Assert.AreEqual (true, element.UnsafeConnectionNtlmAuthentication, "UnsafeConnectionNtlmAuthentication");
134                         Assert.AreEqual (false, element.UseDefaultWebProxy, "UseDefaultWebProxy");
135                 }
136
137                 [Test]
138                 public void HttpsTransportElement () {
139                         HttpsTransportElement element = GetElement<HttpsTransportElement> (1);
140
141                         Assert.AreEqual (typeof (HttpsTransportBindingElement), element.BindingElementType, "BindingElementType");
142                         Assert.AreEqual ("httpsTransport", element.ConfigurationElementName, "ConfigurationElementName");
143
144                         Assert.AreEqual (true, element.ManualAddressing, "ManualAddressing");
145                         Assert.AreEqual (262144, element.MaxBufferPoolSize, "MaxBufferPoolSize");
146                         Assert.AreEqual (32768, element.MaxReceivedMessageSize, "MaxReceivedMessageSize");
147                         Assert.AreEqual (true, element.AllowCookies, "AllowCookies");
148                         Assert.AreEqual (AuthenticationSchemes.None, element.AuthenticationScheme, "AuthenticationScheme");
149                         Assert.AreEqual (true, element.BypassProxyOnLocal, "BypassProxyOnLocal");
150                         Assert.AreEqual (HostNameComparisonMode.Exact, element.HostNameComparisonMode, "HostNameComparisonMode");
151                         Assert.AreEqual (true, element.KeepAliveEnabled, "KeepAliveEnabled");
152                         Assert.AreEqual (32768, element.MaxBufferSize, "MaxBufferSize");
153                         Assert.AreEqual ("https://proxy.address", element.ProxyAddress.OriginalString, "ProxyAddress");
154                         Assert.AreEqual (AuthenticationSchemes.None, element.ProxyAuthenticationScheme, "ProxyAuthenticationScheme");
155                         Assert.AreEqual ("Realm", element.Realm, "Realm");
156                         Assert.AreEqual (TransferMode.Streamed, element.TransferMode, "TransferMode");
157                         Assert.AreEqual (true, element.UnsafeConnectionNtlmAuthentication, "UnsafeConnectionNtlmAuthentication");
158                         Assert.AreEqual (false, element.UseDefaultWebProxy, "UseDefaultWebProxy");
159                 }
160
161                 [Test]
162                 public void PnrpPeerResolverElement () {
163                         PnrpPeerResolverElement element = GetElement<PnrpPeerResolverElement> (0);
164
165                         Assert.AreEqual (typeof (PnrpPeerResolverBindingElement), element.BindingElementType, "BindingElementType");
166                         Assert.AreEqual ("pnrpPeerResolver", element.ConfigurationElementName, "ConfigurationElementName");
167                 }
168
169                 [Test]
170                 public void PrivacyNoticeElement () {
171                         PrivacyNoticeElement element = GetElement<PrivacyNoticeElement> (0);
172
173                         Assert.AreEqual (typeof (PrivacyNoticeBindingElement), element.BindingElementType, "BindingElementType");
174                         Assert.AreEqual ("privacyNoticeAt", element.ConfigurationElementName, "ConfigurationElementName");
175
176                         Assert.AreEqual ("http://url", element.Url.OriginalString, "Url");
177                         Assert.AreEqual (5, element.Version, "Version");
178                 }
179
180                 [Test]
181                 public void ReliableSessionElement () {
182                         ReliableSessionElement element = GetElement<ReliableSessionElement> (0);
183
184                         Assert.AreEqual (typeof (ReliableSessionBindingElement), element.BindingElementType, "BindingElementType");
185                         Assert.AreEqual ("reliableSession", element.ConfigurationElementName, "ConfigurationElementName");
186
187                         Assert.AreEqual (TimeSpan.Parse ("00:00:00.4000000"), element.AcknowledgementInterval, "AcknowledgementInterval");
188                         Assert.AreEqual (false, element.FlowControlEnabled, "FlowControlEnabled");
189                         Assert.AreEqual (new TimeSpan (0, 15, 0), element.InactivityTimeout, "InactivityTimeout");
190                         Assert.AreEqual (8, element.MaxPendingChannels, "MaxPendingChannels");
191                         Assert.AreEqual (16, element.MaxRetryCount, "MaxRetryCount");
192                         Assert.AreEqual (16, element.MaxTransferWindowSize, "MaxTransferWindowSize");
193                         Assert.AreEqual (false, element.Ordered, "Ordered");
194                         Assert.AreEqual (ReliableMessagingVersion.WSReliableMessaging11, element.ReliableMessagingVersion, "ReliableMessagingVersion");
195                 }
196
197                 [Test]
198                 public void SecurityElement () {
199                         SecurityElement element = GetElement<SecurityElement> (0);
200
201                         Assert.AreEqual (typeof (SecurityBindingElement), element.BindingElementType, "BindingElementType");
202                         Assert.AreEqual ("security", element.ConfigurationElementName, "ConfigurationElementName");
203
204                         // TODO
205                 }
206
207                 [Test]
208                 public void SslStreamSecurityElement () {
209                         SslStreamSecurityElement element = GetElement<SslStreamSecurityElement> (0);
210
211                         Assert.AreEqual (typeof (SslStreamSecurityBindingElement), element.BindingElementType, "BindingElementType");
212                         Assert.AreEqual ("sslStreamSecurity", element.ConfigurationElementName, "ConfigurationElementName");
213
214                         Assert.AreEqual (true, element.RequireClientCertificate, "RequireClientCertificate");
215                 }
216
217                 [Test]
218                 public void TransactionFlowElement () {
219                         TransactionFlowElement element = GetElement<TransactionFlowElement> (0);
220
221                         Assert.AreEqual (typeof (TransactionFlowBindingElement), element.BindingElementType, "BindingElementType");
222                         Assert.AreEqual ("transactionFlow", element.ConfigurationElementName, "ConfigurationElementName");
223
224                         Assert.AreEqual (TransactionProtocol.WSAtomicTransactionOctober2004, element.TransactionProtocol, "TransactionProtocol");
225                 }
226
227                 [Test]
228                 public void UseManagedPresentationElement () {
229                         UseManagedPresentationElement element = GetElement<UseManagedPresentationElement> (0);
230
231                         Assert.AreEqual (typeof (UseManagedPresentationBindingElement), element.BindingElementType, "BindingElementType");
232                         Assert.AreEqual ("useManagedPresentation", element.ConfigurationElementName, "ConfigurationElementName");
233                 }
234
235                 [Test]
236                 public void WindowsStreamSecurityElement () {
237                         WindowsStreamSecurityElement element = GetElement<WindowsStreamSecurityElement> (1);
238
239                         Assert.AreEqual (typeof (WindowsStreamSecurityBindingElement), element.BindingElementType, "BindingElementType");
240                         Assert.AreEqual ("windowsStreamSecurity", element.ConfigurationElementName, "ConfigurationElementName");
241
242                         Assert.AreEqual (ProtectionLevel.None, element.ProtectionLevel, "ProtectionLevel");
243                 }
244
245                 [Test]
246                 public void TextMessageEncodingElement () {
247                         TextMessageEncodingElement element = GetElement<TextMessageEncodingElement> (1);
248
249                         Assert.AreEqual (typeof (TextMessageEncodingBindingElement), element.BindingElementType, "BindingElementType");
250                         Assert.AreEqual ("textMessageEncoding", element.ConfigurationElementName, "ConfigurationElementName");
251
252                         Assert.AreEqual (128, element.MaxReadPoolSize, "MaxReadPoolSize");
253                         Assert.AreEqual (Encoding.UTF32, element.WriteEncoding, "WriteEncoding");
254                         Assert.AreEqual (MessageVersion.Soap11WSAddressingAugust2004, element.MessageVersion, "MessageVersion");
255                         Assert.AreEqual (32, element.MaxWritePoolSize, "MaxWritePoolSize");
256                         Assert.AreEqual (128, element.ReaderQuotas.MaxArrayLength, "ReaderQuotas.MaxArrayLength");
257                         Assert.AreEqual (128, element.ReaderQuotas.MaxBytesPerRead, "ReaderQuotas.MaxBytesPerRead");
258                         Assert.AreEqual (128, element.ReaderQuotas.MaxDepth, "ReaderQuotas.MaxDepth");
259                         Assert.AreEqual (128, element.ReaderQuotas.MaxNameTableCharCount, "ReaderQuotas.MaxNameTableCharCount");
260                         Assert.AreEqual (128, element.ReaderQuotas.MaxStringContentLength, "ReaderQuotas.MaxStringContentLength");
261                 }
262
263                 [Test]
264                 public void MtomMessageEncodingElement () {
265                         MtomMessageEncodingElement element = GetElement<MtomMessageEncodingElement> (2);
266
267                         Assert.AreEqual (typeof (MtomMessageEncodingBindingElement), element.BindingElementType, "BindingElementType");
268                         Assert.AreEqual ("mtomMessageEncoding", element.ConfigurationElementName, "ConfigurationElementName");
269
270                         Assert.AreEqual (128, element.MaxReadPoolSize, "MaxReadPoolSize");
271                         Assert.AreEqual (32, element.MaxWritePoolSize, "MaxWritePoolSize");
272                         Assert.AreEqual (32768, element.MaxBufferSize, "MaxBufferSize");
273                         Assert.AreEqual (Encoding.UTF32, element.WriteEncoding, "WriteEncoding");
274                         Assert.AreEqual (MessageVersion.Soap11WSAddressingAugust2004, element.MessageVersion, "MessageVersion");
275                         Assert.AreEqual (256, element.ReaderQuotas.MaxArrayLength, "ReaderQuotas.MaxArrayLength");
276                         Assert.AreEqual (256, element.ReaderQuotas.MaxBytesPerRead, "ReaderQuotas.MaxBytesPerRead");
277                         Assert.AreEqual (256, element.ReaderQuotas.MaxDepth, "ReaderQuotas.MaxDepth");
278                         Assert.AreEqual (256, element.ReaderQuotas.MaxNameTableCharCount, "ReaderQuotas.MaxNameTableCharCount");
279                         Assert.AreEqual (256, element.ReaderQuotas.MaxStringContentLength, "ReaderQuotas.MaxStringContentLength");
280                 }
281
282                 [Test]
283                 public void MsmqIntegrationElement () {
284                         MsmqIntegrationElement element = GetElement<MsmqIntegrationElement> (2);
285
286                         Assert.AreEqual (typeof (global::System.ServiceModel.MsmqIntegration.MsmqIntegrationBindingElement), element.BindingElementType, "BindingElementType");
287                         Assert.AreEqual ("msmqIntegration", element.ConfigurationElementName, "ConfigurationElementName");
288
289                         Assert.AreEqual (true, element.ManualAddressing, "ManualAddressing");
290                         Assert.AreEqual (262144, element.MaxBufferPoolSize, "MaxBufferPoolSize");
291                         Assert.AreEqual (32768, element.MaxReceivedMessageSize, "MaxReceivedMessageSize");
292                         Assert.AreEqual ("http://CustomDeadLetterQueue", element.CustomDeadLetterQueue.OriginalString, "CustomDeadLetterQueue");
293                         Assert.AreEqual (DeadLetterQueue.Custom, element.DeadLetterQueue, "DeadLetterQueue");
294                         Assert.AreEqual (false, element.Durable, "Durable");
295                         Assert.AreEqual (false, element.ExactlyOnce, "ExactlyOnce");
296                         Assert.AreEqual (3, element.MaxRetryCycles, "MaxRetryCycles");
297                         Assert.AreEqual (ReceiveErrorHandling.Drop, element.ReceiveErrorHandling, "ReceiveErrorHandling");
298                         Assert.AreEqual (10, element.ReceiveRetryCount, "ReceiveRetryCount");
299                         Assert.AreEqual (new TimeSpan (0, 15, 0), element.RetryCycleDelay, "RetryCycleDelay");
300                         Assert.AreEqual (TimeSpan.Parse ("1.12:00:00"), element.TimeToLive, "TimeToLive");
301                         Assert.AreEqual (true, element.UseSourceJournal, "UseSourceJournal");
302                         Assert.AreEqual (true, element.UseMsmqTracing, "UseMsmqTracing");
303                         Assert.AreEqual (global::System.ServiceModel.MsmqIntegration.MsmqMessageSerializationFormat.Binary, element.SerializationFormat, "SerializationFormat");
304                         Assert.AreEqual (MsmqAuthenticationMode.Certificate, element.MsmqTransportSecurity.MsmqAuthenticationMode, "MsmqTransportSecurity.MsmqAuthenticationMode");
305                         Assert.AreEqual (MsmqEncryptionAlgorithm.Aes, element.MsmqTransportSecurity.MsmqEncryptionAlgorithm, "MsmqTransportSecurity.MsmqEncryptionAlgorithm");
306                         Assert.AreEqual (ProtectionLevel.EncryptAndSign, element.MsmqTransportSecurity.MsmqProtectionLevel, "MsmqTransportSecurity.MsmqProtectionLevel");
307                         Assert.AreEqual (MsmqSecureHashAlgorithm.Sha256, element.MsmqTransportSecurity.MsmqSecureHashAlgorithm, "MsmqTransportSecurity.MsmqSecureHashAlgorithm");
308                 }
309
310                 [Test]
311                 public void MsmqTransportElement () {
312                         MsmqTransportElement element = GetElement<MsmqTransportElement> (3);
313
314                         Assert.AreEqual (typeof (MsmqTransportBindingElement), element.BindingElementType, "BindingElementType");
315                         Assert.AreEqual ("msmqTransport", element.ConfigurationElementName, "ConfigurationElementName");
316
317                         Assert.AreEqual (true, element.ManualAddressing, "ManualAddressing");
318                         Assert.AreEqual (262144, element.MaxBufferPoolSize, "MaxBufferPoolSize");
319                         Assert.AreEqual (262144, element.MaxReceivedMessageSize, "MaxReceivedMessageSize");
320                         Assert.AreEqual ("http://CustomDeadLetterQueue", element.CustomDeadLetterQueue.OriginalString, "CustomDeadLetterQueue");
321                         Assert.AreEqual (DeadLetterQueue.Custom, element.DeadLetterQueue, "DeadLetterQueue");
322                         Assert.AreEqual (false, element.Durable, "Durable");
323                         Assert.AreEqual (false, element.ExactlyOnce, "ExactlyOnce");
324                         Assert.AreEqual (3, element.MaxRetryCycles, "MaxRetryCycles");
325                         Assert.AreEqual (ReceiveErrorHandling.Drop, element.ReceiveErrorHandling, "ReceiveErrorHandling");
326                         Assert.AreEqual (9, element.ReceiveRetryCount, "ReceiveRetryCount");
327                         Assert.AreEqual (new TimeSpan (0, 15, 0), element.RetryCycleDelay, "RetryCycleDelay");
328                         Assert.AreEqual (TimeSpan.Parse ("1.12:00:00"), element.TimeToLive, "TimeToLive");
329                         Assert.AreEqual (true, element.UseSourceJournal, "UseSourceJournal");
330                         Assert.AreEqual (true, element.UseMsmqTracing, "UseMsmqTracing");
331                         Assert.AreEqual (MsmqAuthenticationMode.Certificate, element.MsmqTransportSecurity.MsmqAuthenticationMode, "MsmqTransportSecurity.MsmqAuthenticationMode");
332                         Assert.AreEqual (MsmqEncryptionAlgorithm.Aes, element.MsmqTransportSecurity.MsmqEncryptionAlgorithm, "MsmqTransportSecurity.MsmqEncryptionAlgorithm");
333                         Assert.AreEqual (ProtectionLevel.EncryptAndSign, element.MsmqTransportSecurity.MsmqProtectionLevel, "MsmqTransportSecurity.MsmqProtectionLevel");
334                         Assert.AreEqual (MsmqSecureHashAlgorithm.Sha256, element.MsmqTransportSecurity.MsmqSecureHashAlgorithm, "MsmqTransportSecurity.MsmqSecureHashAlgorithm");
335                 }
336
337                 [Test]
338                 public void NamedPipeTransportElement () {
339                         NamedPipeTransportElement element = GetElement<NamedPipeTransportElement> (4);
340
341                         Assert.AreEqual (typeof (NamedPipeTransportBindingElement), element.BindingElementType, "BindingElementType");
342                         Assert.AreEqual ("namedPipeTransport", element.ConfigurationElementName, "ConfigurationElementName");
343
344                         Assert.AreEqual (true, element.ManualAddressing, "ManualAddressing");
345                         Assert.AreEqual (262144, element.MaxBufferPoolSize, "MaxBufferPoolSize");
346                         Assert.AreEqual (32768, element.MaxBufferSize, "MaxBufferSize");
347                         Assert.AreEqual (32768, element.MaxReceivedMessageSize, "MaxReceivedMessageSize");
348                         Assert.AreEqual (4096, element.ConnectionBufferSize, "ConnectionBufferSize");
349                         Assert.AreEqual (HostNameComparisonMode.Exact, element.HostNameComparisonMode, "HostNameComparisonMode");
350                         Assert.AreEqual (new TimeSpan (0, 0, 20), element.ChannelInitializationTimeout, "ChannelInitializationTimeout");
351                         Assert.AreEqual (5, element.MaxPendingConnections, "MaxPendingConnections");
352                         Assert.AreEqual (TimeSpan.Parse ("00:00:01.2000000"), element.MaxOutputDelay, "MaxOutputDelay");
353                         Assert.AreEqual (3, element.MaxPendingAccepts, "MaxPendingAccepts");
354                         Assert.AreEqual (TransferMode.Streamed, element.TransferMode, "MaxPendingAccepts");
355
356                         Assert.AreEqual ("GroupName", element.ConnectionPoolSettings.GroupName, "ConnectionPoolSettings.GroupName");
357                         Assert.AreEqual (new TimeSpan (0, 6, 0), element.ConnectionPoolSettings.IdleTimeout, "ConnectionPoolSettings.IdleTimeout");
358                         Assert.AreEqual (20, element.ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint, "ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint");
359                 }
360
361                 [Test]
362                 public void TcpTransportElement () {
363                         TcpTransportElement element = GetElement<TcpTransportElement> (5);
364
365                         Assert.AreEqual (typeof (TcpTransportBindingElement), element.BindingElementType, "BindingElementType");
366                         Assert.AreEqual ("tcpTransport", element.ConfigurationElementName, "ConfigurationElementName");
367
368                         Assert.AreEqual (true, element.ManualAddressing, "ManualAddressing");
369                         Assert.AreEqual (262144, element.MaxBufferPoolSize, "MaxBufferPoolSize");
370                         Assert.AreEqual (32768, element.MaxBufferSize, "MaxBufferSize");
371                         Assert.AreEqual (32768, element.MaxReceivedMessageSize, "MaxReceivedMessageSize");
372                         Assert.AreEqual (4096, element.ConnectionBufferSize, "ConnectionBufferSize");
373                         Assert.AreEqual (HostNameComparisonMode.Exact, element.HostNameComparisonMode, "HostNameComparisonMode");
374                         Assert.AreEqual (new TimeSpan (0, 0, 15), element.ChannelInitializationTimeout, "ChannelInitializationTimeout");
375                         Assert.AreEqual (20, element.MaxPendingConnections, "MaxPendingConnections");
376                         Assert.AreEqual (TimeSpan.Parse ("00:00:01.2000000"), element.MaxOutputDelay, "MaxOutputDelay");
377                         Assert.AreEqual (3, element.MaxPendingAccepts, "MaxPendingAccepts");
378                         Assert.AreEqual (TransferMode.Streamed, element.TransferMode, "MaxPendingAccepts");
379                         Assert.AreEqual (20, element.ListenBacklog, "ListenBacklog");
380                         Assert.AreEqual (true, element.PortSharingEnabled, "PortSharingEnabled");
381                         Assert.AreEqual (true, element.TeredoEnabled, "TeredoEnabled");
382
383                         Assert.AreEqual ("GroupName", element.ConnectionPoolSettings.GroupName, "ConnectionPoolSettings.GroupName");
384                         Assert.AreEqual (new TimeSpan (0, 15, 0), element.ConnectionPoolSettings.LeaseTimeout, "ConnectionPoolSettings.LeaseTimeout");
385                         Assert.AreEqual (new TimeSpan (0, 2, 30), element.ConnectionPoolSettings.IdleTimeout, "ConnectionPoolSettings.IdleTimeout");
386                         Assert.AreEqual (30, element.ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint, "ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint");
387                 }
388
389                 [Test]
390                 public void PeerTransportElement () {
391                         PeerTransportElement element = GetElement<PeerTransportElement> (6);
392
393                         Assert.AreEqual (typeof (PeerTransportBindingElement), element.BindingElementType, "BindingElementType");
394                         Assert.AreEqual ("peerTransport", element.ConfigurationElementName, "ConfigurationElementName");
395
396                         Assert.AreEqual (262144, element.MaxBufferPoolSize, "MaxBufferPoolSize");
397                         Assert.AreEqual (32768, element.MaxReceivedMessageSize, "MaxReceivedMessageSize");
398                         Assert.AreEqual (IPAddress.Parse ("192.168.0.1"), element.ListenIPAddress, "ListenIPAddress");
399                         Assert.AreEqual (88, element.Port, "Port");
400
401                         Assert.AreEqual (SecurityMode.Message, element.Security.Mode, "Security.Mode");
402                         Assert.AreEqual (PeerTransportCredentialType.Certificate, element.Security.Transport.CredentialType, "Security.Transport.CredentialType");
403                 }
404         }
405 }