1 //
2 // ServiceBehaviorElementTest.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 #if !MOBILE && !XAMMAC_4_5
29 using System;
30 using System.Collections.Generic;
31 using System.Text;
32 using NUnit.Framework;
33 using System.ServiceModel.Configuration;
34 using System.ServiceModel.Description;
35 using System.Configuration;
36 using System.ServiceModel;
37 using System.Security.Cryptography.X509Certificates;
38 using System.ServiceModel.Security;
39 
40 namespace MonoTests.System.ServiceModel.Configuration
41 {
42 	[TestFixture]
43 	public class ServiceBehaviorElementTest
44 	{
OpenConfig()45 		ServiceBehaviorElement OpenConfig () {
46 			ServiceModelSectionGroup config = (ServiceModelSectionGroup) ConfigurationManager.OpenExeConfiguration ("Test/config/serviceBehaviors").GetSectionGroup ("system.serviceModel");
47 			return config.Behaviors.ServiceBehaviors [0];
48 		}
49 
50 		[Test]
ServiceAuthorizationElement()51 		public void ServiceAuthorizationElement () {
52 			ServiceBehaviorElement behavior = OpenConfig ();
53 			ServiceAuthorizationElement serviceAuthorization = (ServiceAuthorizationElement) behavior [typeof (ServiceAuthorizationElement)];
54 
55 			if (serviceAuthorization == null)
56 				Assert.Fail ("ServiceAuthorizationElement is not exist in collection.");
57 
58 			Assert.AreEqual (typeof (ServiceAuthorizationBehavior), serviceAuthorization.BehaviorType, "BehaviorType");
59 			Assert.AreEqual ("serviceAuthorization", serviceAuthorization.ConfigurationElementName, "ConfigurationElementName");
60 
61 			Assert.AreEqual ("RoleProvider", serviceAuthorization.RoleProviderName, "RoleProviderName");
62 			Assert.AreEqual (PrincipalPermissionMode.UseAspNetRoles, serviceAuthorization.PrincipalPermissionMode, "PrincipalPermissionMode");
63 			Assert.AreEqual (true, serviceAuthorization.ImpersonateCallerForAllOperations, "ImpersonateCallerForAllOperations");
64 			Assert.AreEqual ("SerAuthManagType", serviceAuthorization.ServiceAuthorizationManagerType, "ServiceAuthorizationManagerType");
65 
66 			Assert.AreEqual (2, serviceAuthorization.AuthorizationPolicies.Count, "AuthorizationPolicies.Count");
67 			Assert.AreEqual ("PolicyType1", serviceAuthorization.AuthorizationPolicies [0].PolicyType, "AuthorizationPolicies[0].PolicyType");
68 			Assert.AreEqual ("PolicyType2", serviceAuthorization.AuthorizationPolicies [1].PolicyType, "AuthorizationPolicies[1].PolicyType");
69 		}
70 
71 		[Test]
ServiceAuthorizationElement_default()72 		public void ServiceAuthorizationElement_default () {
73 			ServiceAuthorizationElement serviceAuthorization = new ServiceAuthorizationElement ();
74 
75 			Assert.AreEqual (typeof (ServiceAuthorizationBehavior), serviceAuthorization.BehaviorType, "BehaviorType");
76 			Assert.AreEqual ("serviceAuthorization", serviceAuthorization.ConfigurationElementName, "ConfigurationElementName");
77 
78 			Assert.AreEqual (String.Empty, serviceAuthorization.RoleProviderName, "RoleProviderName");
79 			Assert.AreEqual (PrincipalPermissionMode.UseWindowsGroups, serviceAuthorization.PrincipalPermissionMode, "PrincipalPermissionMode");
80 			Assert.AreEqual (false, serviceAuthorization.ImpersonateCallerForAllOperations, "ImpersonateCallerForAllOperations");
81 			Assert.AreEqual (String.Empty, serviceAuthorization.ServiceAuthorizationManagerType, "ServiceAuthorizationManagerType");
82 
83 			Assert.AreEqual (0, serviceAuthorization.AuthorizationPolicies.Count, "AuthorizationPolicies.Count");
84 		}
85 
86 		[Test]
DataContractSerializerElement()87 		public void DataContractSerializerElement () {
88 			ServiceBehaviorElement behavior = OpenConfig ();
89 			DataContractSerializerElement element = (DataContractSerializerElement) behavior [typeof (DataContractSerializerElement)];
90 
91 			if (element == null)
92 				Assert.Fail ("DataContractSerializerElement is not exist in collection.");
93 
94 			Assert.AreEqual ("System.ServiceModel.Dispatcher.DataContractSerializerServiceBehavior", element.BehaviorType.FullName, "BehaviorType");
95 			Assert.AreEqual ("dataContractSerializer", element.ConfigurationElementName, "ConfigurationElementName");
96 
97 			Assert.AreEqual (true, element.IgnoreExtensionDataObject, "IgnoreExtensionDataObject");
98 			Assert.AreEqual (32768, element.MaxItemsInObjectGraph, "MaxItemsInObjectGraph");
99 		}
100 
101 		[Test]
DataContractSerializerElement_defaults()102 		public void DataContractSerializerElement_defaults () {
103 			DataContractSerializerElement element = new DataContractSerializerElement ();
104 
105 			Assert.AreEqual ("System.ServiceModel.Dispatcher.DataContractSerializerServiceBehavior", element.BehaviorType.FullName, "BehaviorType");
106 			Assert.AreEqual ("dataContractSerializer", element.ConfigurationElementName, "ConfigurationElementName");
107 
108 			Assert.AreEqual (false, element.IgnoreExtensionDataObject, "IgnoreExtensionDataObject");
109 			Assert.AreEqual (65536, element.MaxItemsInObjectGraph, "MaxItemsInObjectGraph");
110 		}
111 
112 		[Test]
ServiceDebugElement()113 		public void ServiceDebugElement () {
114 			ServiceBehaviorElement behavior = OpenConfig ();
115 			ServiceDebugElement element = (ServiceDebugElement) behavior [typeof (ServiceDebugElement)];
116 
117 			if (element == null)
118 				Assert.Fail ("ServiceDebugElement is not exist in collection.");
119 
120 			Assert.AreEqual (typeof (ServiceDebugBehavior), element.BehaviorType, "BehaviorType");
121 			Assert.AreEqual ("serviceDebug", element.ConfigurationElementName, "ConfigurationElementName");
122 
123 			Assert.AreEqual (false, element.HttpHelpPageEnabled, "HttpHelpPageEnabled");
124 			Assert.AreEqual ("http://help.page.url", element.HttpHelpPageUrl.OriginalString, "HttpHelpPageUrl");
125 			Assert.AreEqual (false, element.HttpsHelpPageEnabled, "HttpsHelpPageEnabled");
126 			Assert.AreEqual ("https://help.page.url", element.HttpsHelpPageUrl.OriginalString, "HttpsHelpPageUrl");
127 			Assert.AreEqual (true, element.IncludeExceptionDetailInFaults, "IncludeExceptionDetailInFaults");
128 		}
129 
130 		[Test]
ServiceDebugElement_defaults()131 		public void ServiceDebugElement_defaults () {
132 			ServiceDebugElement element = new ServiceDebugElement ();
133 
134 			Assert.AreEqual (typeof (ServiceDebugBehavior), element.BehaviorType, "BehaviorType");
135 			Assert.AreEqual ("serviceDebug", element.ConfigurationElementName, "ConfigurationElementName");
136 
137 			Assert.AreEqual (true, element.HttpHelpPageEnabled, "HttpHelpPageEnabled");
138 			Assert.AreEqual (null, element.HttpHelpPageUrl, "HttpHelpPageUrl");
139 			Assert.AreEqual (true, element.HttpsHelpPageEnabled, "HttpsHelpPageEnabled");
140 			Assert.AreEqual (null, element.HttpsHelpPageUrl, "HttpsHelpPageUrl");
141 			Assert.AreEqual (false, element.IncludeExceptionDetailInFaults, "IncludeExceptionDetailInFaults");
142 		}
143 
144 		[Test]
ServiceMetadataPublishingElement()145 		public void ServiceMetadataPublishingElement () {
146 			ServiceBehaviorElement behavior = OpenConfig ();
147 			ServiceMetadataPublishingElement element = (ServiceMetadataPublishingElement) behavior [typeof (ServiceMetadataPublishingElement)];
148 
149 			if (element == null)
150 				Assert.Fail ("ServiceMetadataPublishingElement is not exist in collection.");
151 
152 			Assert.AreEqual (typeof (ServiceMetadataBehavior), element.BehaviorType, "BehaviorType");
153 			Assert.AreEqual ("serviceMetadata", element.ConfigurationElementName, "ConfigurationElementName");
154 
155 			Assert.AreEqual (true, element.HttpGetEnabled, "HttpGetEnabled");
156 			Assert.AreEqual ("http://get.url", element.HttpGetUrl.OriginalString, "HttpGetUrl");
157 			Assert.AreEqual (true, element.HttpsGetEnabled, "HttpsGetEnabled");
158 			Assert.AreEqual ("https://get.url", element.HttpsGetUrl.OriginalString, "HttpsHelpPageUrl");
159 			Assert.AreEqual ("http://external.metadata.location", element.ExternalMetadataLocation.OriginalString, "ExternalMetadataLocation");
160 			Assert.AreEqual (PolicyVersion.Policy12, element.PolicyVersion, "PolicyVersion");
161 		}
162 
163 		[Test]
ServiceMetadataPublishingElement_defaults()164 		public void ServiceMetadataPublishingElement_defaults () {
165 			ServiceMetadataPublishingElement element = new ServiceMetadataPublishingElement ();
166 
167 			Assert.AreEqual (typeof (ServiceMetadataBehavior), element.BehaviorType, "BehaviorType");
168 			Assert.AreEqual ("serviceMetadata", element.ConfigurationElementName, "ConfigurationElementName");
169 
170 			Assert.AreEqual (false, element.HttpGetEnabled, "HttpGetEnabled");
171 			Assert.AreEqual (null, element.HttpGetUrl, "HttpGetUrl");
172 			Assert.AreEqual (false, element.HttpsGetEnabled, "HttpsGetEnabled");
173 			Assert.AreEqual (null, element.HttpsGetUrl, "HttpsGetUrl");
174 			Assert.AreEqual (null, element.ExternalMetadataLocation, "ExternalMetadataLocation");
175 			Assert.AreEqual (PolicyVersion.Default, element.PolicyVersion, "PolicyVersion");
176 		}
177 
178 		[Test]
ServiceSecurityAuditElement()179 		public void ServiceSecurityAuditElement () {
180 			ServiceBehaviorElement behavior = OpenConfig ();
181 			ServiceSecurityAuditElement element = (ServiceSecurityAuditElement) behavior [typeof (ServiceSecurityAuditElement)];
182 
183 			if (element == null)
184 				Assert.Fail ("ServiceSecurityAuditElement is not exist in collection.");
185 
186 			Assert.AreEqual (typeof (ServiceSecurityAuditBehavior), element.BehaviorType, "BehaviorType");
187 			Assert.AreEqual ("serviceSecurityAudit", element.ConfigurationElementName, "ConfigurationElementName");
188 
189 			Assert.AreEqual (AuditLogLocation.Application, element.AuditLogLocation, "AuditLogLocation");
190 			Assert.AreEqual (false, element.SuppressAuditFailure, "SuppressAuditFailure");
191 			Assert.AreEqual (AuditLevel.Success, element.ServiceAuthorizationAuditLevel, "ServiceAuthorizationAuditLevel");
192 			Assert.AreEqual (AuditLevel.Success, element.MessageAuthenticationAuditLevel, "MessageAuthenticationAuditLevel");
193 		}
194 
195 		[Test]
ServiceSecurityAuditElement_defaults()196 		public void ServiceSecurityAuditElement_defaults () {
197 			ServiceSecurityAuditElement element = new ServiceSecurityAuditElement ();
198 
199 			Assert.AreEqual (typeof (ServiceSecurityAuditBehavior), element.BehaviorType, "BehaviorType");
200 			Assert.AreEqual ("serviceSecurityAudit", element.ConfigurationElementName, "ConfigurationElementName");
201 
202 			Assert.AreEqual (AuditLogLocation.Default, element.AuditLogLocation, "AuditLogLocation");
203 			Assert.AreEqual (true, element.SuppressAuditFailure, "SuppressAuditFailure");
204 			Assert.AreEqual (AuditLevel.None, element.ServiceAuthorizationAuditLevel, "ServiceAuthorizationAuditLevel");
205 			Assert.AreEqual (AuditLevel.None, element.MessageAuthenticationAuditLevel, "MessageAuthenticationAuditLevel");
206 		}
207 
208 		[Test]
ServiceThrottlingElement()209 		public void ServiceThrottlingElement () {
210 			ServiceBehaviorElement behavior = OpenConfig ();
211 			ServiceThrottlingElement element = (ServiceThrottlingElement) behavior [typeof (ServiceThrottlingElement)];
212 
213 			if (element == null)
214 				Assert.Fail ("ServiceThrottlingElement is not exist in collection.");
215 
216 			Assert.AreEqual (typeof (ServiceThrottlingBehavior), element.BehaviorType, "BehaviorType");
217 			Assert.AreEqual ("serviceThrottling", element.ConfigurationElementName, "ConfigurationElementName");
218 
219 			Assert.AreEqual (32, element.MaxConcurrentCalls, "MaxConcurrentCalls");
220 			Assert.AreEqual (20, element.MaxConcurrentSessions, "MaxConcurrentSessions");
221 			Assert.AreEqual (14, element.MaxConcurrentInstances, "MaxConcurrentInstances");
222 		}
223 
224 		[Test]
ServiceThrottlingElement_defaults()225 		public void ServiceThrottlingElement_defaults () {
226 			ServiceThrottlingElement element = new ServiceThrottlingElement ();
227 
228 			Assert.AreEqual (typeof (ServiceThrottlingBehavior), element.BehaviorType, "BehaviorType");
229 			Assert.AreEqual ("serviceThrottling", element.ConfigurationElementName, "ConfigurationElementName");
230 
231 			Assert.AreEqual (16, element.MaxConcurrentCalls, "MaxConcurrentCalls");
232 			Assert.AreEqual (10, element.MaxConcurrentSessions, "MaxConcurrentSessions");
233 			Assert.AreEqual (26, element.MaxConcurrentInstances, "MaxConcurrentInstances");
234 		}
235 
236 		[Test]
ServiceTimeoutsElement()237 		public void ServiceTimeoutsElement () {
238 			ServiceBehaviorElement behavior = OpenConfig ();
239 			ServiceTimeoutsElement element = (ServiceTimeoutsElement) behavior [typeof (ServiceTimeoutsElement)];
240 
241 			if (element == null)
242 				Assert.Fail ("ServiceTimeoutsElement is not exist in collection.");
243 
244 			Assert.AreEqual ("System.ServiceModel.Description.ServiceTimeoutsBehavior", element.BehaviorType.FullName, "BehaviorType");
245 			Assert.AreEqual ("serviceTimeouts", element.ConfigurationElementName, "ConfigurationElementName");
246 
247 			Assert.AreEqual (new TimeSpan (0, 3, 0), element.TransactionTimeout, "TransactionTimeout");
248 		}
249 
250 		[Test]
ServiceTimeoutsElement_defaults()251 		public void ServiceTimeoutsElement_defaults () {
252 			ServiceTimeoutsElement element = new ServiceTimeoutsElement ();
253 
254 			Assert.AreEqual ("System.ServiceModel.Description.ServiceTimeoutsBehavior", element.BehaviorType.FullName, "BehaviorType");
255 			Assert.AreEqual ("serviceTimeouts", element.ConfigurationElementName, "ConfigurationElementName");
256 
257 			Assert.AreEqual (new TimeSpan (0, 0, 0), element.TransactionTimeout, "TransactionTimeout");
258 		}
259 
260 		[Test]
ServiceCredentialsElement()261 		public void ServiceCredentialsElement () {
262 			ServiceBehaviorElement behavior = OpenConfig ();
263 			ServiceCredentialsElement element = (ServiceCredentialsElement) behavior [typeof (ServiceCredentialsElement)];
264 
265 			if (element == null)
266 				Assert.Fail ("ServiceCredentialsElement is not exist in collection.");
267 
268 			Assert.AreEqual (typeof (ServiceCredentials), element.BehaviorType, "BehaviorType");
269 			Assert.AreEqual ("serviceCredentials", element.ConfigurationElementName, "ConfigurationElementName");
270 
271 			Assert.AreEqual ("ServiceCredentialsType", element.Type, "Type");
272 
273 			Assert.AreEqual ("FindValue", element.ClientCertificate.Certificate.FindValue, "ClientCertificate.Certificate.FindValue");
274 			Assert.AreEqual (StoreLocation.CurrentUser, element.ClientCertificate.Certificate.StoreLocation, "ClientCertificate.Certificate.StoreLocation");
275 			Assert.AreEqual (StoreName.Root, element.ClientCertificate.Certificate.StoreName, "ClientCertificate.Certificate.StoreName");
276 			Assert.AreEqual (X509FindType.FindByIssuerName, element.ClientCertificate.Certificate.X509FindType, "ClientCertificate.Certificate.X509FindType");
277 
278 			Assert.AreEqual ("CustomCertificateValidationType", element.ClientCertificate.Authentication.CustomCertificateValidatorType, "ClientCertificate.Authentication.CustomCertificateValidatorType");
279 			Assert.AreEqual (X509CertificateValidationMode.PeerOrChainTrust, element.ClientCertificate.Authentication.CertificateValidationMode, "ClientCertificate.Authentication.CustomCertificateValidatorType");
280 			Assert.AreEqual (X509RevocationMode.Offline, element.ClientCertificate.Authentication.RevocationMode, "ClientCertificate.Authentication.RevocationMode");
281 			Assert.AreEqual (StoreLocation.CurrentUser, element.ClientCertificate.Authentication.TrustedStoreLocation, "ClientCertificate.Authentication.TrustedStoreLocation");
282 			Assert.AreEqual (false, element.ClientCertificate.Authentication.IncludeWindowsGroups, "ClientCertificate.Authentication.IncludeWindowsGroups");
283 			Assert.AreEqual (true, element.ClientCertificate.Authentication.MapClientCertificateToWindowsAccount, "ClientCertificate.Authentication.MapClientCertificateToWindowsAccount");
284 
285 			Assert.AreEqual ("FindValue", element.ServiceCertificate.FindValue, "ServiceCertificate.FindValue");
286 			Assert.AreEqual (StoreLocation.CurrentUser, element.ServiceCertificate.StoreLocation, "ServiceCertificate.StoreLocation");
287 			Assert.AreEqual (StoreName.Root, element.ServiceCertificate.StoreName, "ServiceCertificate.StoreName");
288 			Assert.AreEqual (X509FindType.FindByIssuerName, element.ServiceCertificate.X509FindType, "ServiceCertificate.X509FindType");
289 
290 			Assert.AreEqual (UserNamePasswordValidationMode.MembershipProvider, element.UserNameAuthentication.UserNamePasswordValidationMode, "UserNameAuthentication.UserNamePasswordValidationMode");
291 			Assert.AreEqual (false, element.UserNameAuthentication.IncludeWindowsGroups, "UserNameAuthentication.IncludeWindowsGroups");
292 			Assert.AreEqual ("MembershipProviderName", element.UserNameAuthentication.MembershipProviderName, "UserNameAuthentication.MembershipProviderName");
293 			Assert.AreEqual ("CustomUserNamePasswordValidatorType", element.UserNameAuthentication.CustomUserNamePasswordValidatorType, "UserNameAuthentication.customUserNamePasswordValidatorType");
294 			Assert.AreEqual (true, element.UserNameAuthentication.CacheLogonTokens, "UserNameAuthentication.CacheLogonTokens");
295 			Assert.AreEqual (252, element.UserNameAuthentication.MaxCachedLogonTokens, "UserNameAuthentication.MaxCachedLogonTokens");
296 			Assert.AreEqual (new TimeSpan (0, 30, 0), element.UserNameAuthentication.CachedLogonTokenLifetime, "UserNameAuthentication.CachedLogonTokenLifetime");
297 
298 			Assert.AreEqual ("FindValue", element.Peer.Certificate.FindValue, "Peer.Certificate.FindValue");
299 			Assert.AreEqual (StoreLocation.LocalMachine, element.Peer.Certificate.StoreLocation, "Peer.Certificate.StoreLocation");
300 			Assert.AreEqual (StoreName.Root, element.Peer.Certificate.StoreName, "Peer.Certificate.StoreName");
301 			Assert.AreEqual (X509FindType.FindByIssuerName, element.Peer.Certificate.X509FindType, "Peer.Certificate.X509FindType");
302 
303 			Assert.AreEqual ("CustomCertificateValidatorType", element.Peer.PeerAuthentication.CustomCertificateValidatorType, "Peer.Authentication.CustomCertificateValidatorType");
304 			Assert.AreEqual (X509CertificateValidationMode.Custom, element.Peer.PeerAuthentication.CertificateValidationMode, "Peer.Authentication.CustomCertificateValidatorType");
305 			Assert.AreEqual (X509RevocationMode.Offline, element.Peer.PeerAuthentication.RevocationMode, "Peer.Authentication.RevocationMode");
306 			Assert.AreEqual (StoreLocation.LocalMachine, element.Peer.PeerAuthentication.TrustedStoreLocation, "Peer.Authentication.TrustedStoreLocation");
307 
308 			Assert.AreEqual ("CustomCertificateValidatorType", element.Peer.MessageSenderAuthentication.CustomCertificateValidatorType, "Peer.MessageSenderAuthentication.CustomCertificateValidatorType");
309 			Assert.AreEqual (X509CertificateValidationMode.None, element.Peer.MessageSenderAuthentication.CertificateValidationMode, "Peer.MessageSenderAuthentication.CustomCertificateValidatorType");
310 			Assert.AreEqual (X509RevocationMode.Offline, element.Peer.MessageSenderAuthentication.RevocationMode, "Peer.MessageSenderAuthentication.RevocationMode");
311 			Assert.AreEqual (StoreLocation.LocalMachine, element.Peer.MessageSenderAuthentication.TrustedStoreLocation, "Peer.MessageSenderAuthentication.TrustedStoreLocation");
312 
313 			Assert.AreEqual ("CustomCertificateValidatorType", element.IssuedTokenAuthentication.CustomCertificateValidatorType, "IssuedTokenAuthentication.CustomCertificateValidatorType");
314 			Assert.AreEqual (X509CertificateValidationMode.PeerOrChainTrust, element.IssuedTokenAuthentication.CertificateValidationMode, "IssuedTokenAuthentication.CustomCertificateValidatorType");
315 			Assert.AreEqual (X509RevocationMode.Offline, element.IssuedTokenAuthentication.RevocationMode, "IssuedTokenAuthentication.RevocationMode");
316 			Assert.AreEqual (StoreLocation.CurrentUser, element.IssuedTokenAuthentication.TrustedStoreLocation, "IssuedTokenAuthentication.TrustedStoreLocation");
317 			Assert.AreEqual ("SalmSerializerType", element.IssuedTokenAuthentication.SamlSerializerType, "IssuedTokenAuthentication.SamlSerializerType");
318 			Assert.AreEqual (true, element.IssuedTokenAuthentication.AllowUntrustedRsaIssuers, "IssuedTokenAuthentication.AllowUntrustedRsaIssuers");
319 
320 			Assert.AreEqual ("FindValue", element.IssuedTokenAuthentication.KnownCertificates [0].FindValue, "IssuedTokenAuthentication.KnownCertificates[0].FindValue");
321 			Assert.AreEqual (StoreLocation.CurrentUser, element.IssuedTokenAuthentication.KnownCertificates [0].StoreLocation, "IssuedTokenAuthentication.KnownCertificates[0].StoreLocation");
322 			Assert.AreEqual (StoreName.Root, element.IssuedTokenAuthentication.KnownCertificates [0].StoreName, "IssuedTokenAuthentication.KnownCertificates[0].StoreName");
323 			Assert.AreEqual (X509FindType.FindByIssuerName, element.IssuedTokenAuthentication.KnownCertificates [0].X509FindType, "IssuedTokenAuthentication.KnownCertificates[0].X509FindType");
324 
325 			Assert.AreEqual ("SecurityStateEncoderType", element.SecureConversationAuthentication.SecurityStateEncoderType, "SecureConversationAuthentication.SecurityStateEncoderType");
326 		}
327 
328 		[Test]
ServiceCredentialsElement_defaults()329 		public void ServiceCredentialsElement_defaults () {
330 			ServiceCredentialsElement element = new ServiceCredentialsElement ();
331 
332 			Assert.AreEqual (typeof (ServiceCredentials), element.BehaviorType, "BehaviorType");
333 			Assert.AreEqual ("serviceCredentials", element.ConfigurationElementName, "ConfigurationElementName");
334 
335 			Assert.AreEqual (String.Empty, element.Type, "Type");
336 
337 			Assert.AreEqual (String.Empty, element.ClientCertificate.Certificate.FindValue, "ClientCertificate.Certificate.FindValue");
338 			Assert.AreEqual (StoreLocation.LocalMachine, element.ClientCertificate.Certificate.StoreLocation, "ClientCertificate.Certificate.StoreLocation");
339 			Assert.AreEqual (StoreName.My, element.ClientCertificate.Certificate.StoreName, "ClientCertificate.Certificate.StoreName");
340 			Assert.AreEqual (X509FindType.FindBySubjectDistinguishedName, element.ClientCertificate.Certificate.X509FindType, "ClientCertificate.Certificate.X509FindType");
341 
342 			Assert.AreEqual (String.Empty, element.ClientCertificate.Authentication.CustomCertificateValidatorType, "ClientCertificate.Authentication.CustomCertificateValidatorType");
343 			Assert.AreEqual (X509CertificateValidationMode.ChainTrust, element.ClientCertificate.Authentication.CertificateValidationMode, "ClientCertificate.Authentication.CustomCertificateValidatorType");
344 			Assert.AreEqual (X509RevocationMode.Online, element.ClientCertificate.Authentication.RevocationMode, "ClientCertificate.Authentication.RevocationMode");
345 			Assert.AreEqual (StoreLocation.LocalMachine, element.ClientCertificate.Authentication.TrustedStoreLocation, "ClientCertificate.Authentication.TrustedStoreLocation");
346 			Assert.AreEqual (true, element.ClientCertificate.Authentication.IncludeWindowsGroups, "ClientCertificate.Authentication.IncludeWindowsGroups");
347 			Assert.AreEqual (false, element.ClientCertificate.Authentication.MapClientCertificateToWindowsAccount, "ClientCertificate.Authentication.MapClientCertificateToWindowsAccount");
348 
349 			Assert.AreEqual (String.Empty, element.ServiceCertificate.FindValue, "ServiceCertificate.FindValue");
350 			Assert.AreEqual (StoreLocation.LocalMachine, element.ServiceCertificate.StoreLocation, "ServiceCertificate.StoreLocation");
351 			Assert.AreEqual (StoreName.My, element.ServiceCertificate.StoreName, "ServiceCertificate.StoreName");
352 			Assert.AreEqual (X509FindType.FindBySubjectDistinguishedName, element.ServiceCertificate.X509FindType, "ServiceCertificate.X509FindType");
353 
354 			Assert.AreEqual (UserNamePasswordValidationMode.Windows, element.UserNameAuthentication.UserNamePasswordValidationMode, "UserNameAuthentication.UserNamePasswordValidationMode");
355 			Assert.AreEqual (true, element.UserNameAuthentication.IncludeWindowsGroups, "UserNameAuthentication.IncludeWindowsGroups");
356 			Assert.AreEqual (String.Empty, element.UserNameAuthentication.MembershipProviderName, "UserNameAuthentication.MembershipProviderName");
357 			Assert.AreEqual (String.Empty, element.UserNameAuthentication.CustomUserNamePasswordValidatorType, "UserNameAuthentication.customUserNamePasswordValidatorType");
358 			Assert.AreEqual (false, element.UserNameAuthentication.CacheLogonTokens, "UserNameAuthentication.CacheLogonTokens");
359 			Assert.AreEqual (128, element.UserNameAuthentication.MaxCachedLogonTokens, "UserNameAuthentication.MaxCachedLogonTokens");
360 			Assert.AreEqual (new TimeSpan (0, 15, 0), element.UserNameAuthentication.CachedLogonTokenLifetime, "UserNameAuthentication.CachedLogonTokenLifetime");
361 
362 			Assert.AreEqual (String.Empty, element.Peer.Certificate.FindValue, "Peer.Certificate.FindValue");
363 			Assert.AreEqual (StoreLocation.CurrentUser, element.Peer.Certificate.StoreLocation, "Peer.Certificate.StoreLocation");
364 			Assert.AreEqual (StoreName.My, element.Peer.Certificate.StoreName, "Peer.Certificate.StoreName");
365 			Assert.AreEqual (X509FindType.FindBySubjectDistinguishedName, element.Peer.Certificate.X509FindType, "Peer.Certificate.X509FindType");
366 
367 			Assert.AreEqual (String.Empty, element.Peer.PeerAuthentication.CustomCertificateValidatorType, "Peer.Authentication.CustomCertificateValidatorType");
368 			Assert.AreEqual (X509CertificateValidationMode.PeerOrChainTrust, element.Peer.PeerAuthentication.CertificateValidationMode, "Peer.Authentication.CustomCertificateValidatorType");
369 			Assert.AreEqual (X509RevocationMode.Online, element.Peer.PeerAuthentication.RevocationMode, "Peer.Authentication.RevocationMode");
370 			Assert.AreEqual (StoreLocation.CurrentUser, element.Peer.PeerAuthentication.TrustedStoreLocation, "Peer.Authentication.TrustedStoreLocation");
371 
372 			Assert.AreEqual (String.Empty, element.Peer.MessageSenderAuthentication.CustomCertificateValidatorType, "Peer.MessageSenderAuthentication.CustomCertificateValidatorType");
373 			Assert.AreEqual (X509CertificateValidationMode.PeerOrChainTrust, element.Peer.MessageSenderAuthentication.CertificateValidationMode, "Peer.MessageSenderAuthentication.CustomCertificateValidatorType");
374 			Assert.AreEqual (X509RevocationMode.Online, element.Peer.MessageSenderAuthentication.RevocationMode, "Peer.MessageSenderAuthentication.RevocationMode");
375 			Assert.AreEqual (StoreLocation.CurrentUser, element.Peer.MessageSenderAuthentication.TrustedStoreLocation, "Peer.MessageSenderAuthentication.TrustedStoreLocation");
376 
377 			Assert.AreEqual (String.Empty, element.IssuedTokenAuthentication.CustomCertificateValidatorType, "IssuedTokenAuthentication.CustomCertificateValidatorType");
378 			Assert.AreEqual (X509CertificateValidationMode.ChainTrust, element.IssuedTokenAuthentication.CertificateValidationMode, "IssuedTokenAuthentication.CustomCertificateValidatorType");
379 			Assert.AreEqual (X509RevocationMode.Online, element.IssuedTokenAuthentication.RevocationMode, "IssuedTokenAuthentication.RevocationMode");
380 			Assert.AreEqual (StoreLocation.LocalMachine, element.IssuedTokenAuthentication.TrustedStoreLocation, "IssuedTokenAuthentication.TrustedStoreLocation");
381 			Assert.AreEqual (String.Empty, element.IssuedTokenAuthentication.SamlSerializerType, "IssuedTokenAuthentication.SamlSerializerType");
382 			Assert.AreEqual (false, element.IssuedTokenAuthentication.AllowUntrustedRsaIssuers, "IssuedTokenAuthentication.AllowUntrustedRsaIssuers");
383 
384 			Assert.AreEqual (0, element.IssuedTokenAuthentication.KnownCertificates.Count, "IssuedTokenAuthentication.KnownCertificates.Count");
385 
386 			Assert.AreEqual (String.Empty, element.SecureConversationAuthentication.SecurityStateEncoderType, "SecureConversationAuthentication.SecurityStateEncoderType");
387 		}
388 	}
389 }
390 #endif
391