public static void DefaultSettings_Echo_RoundTrips_String(WSMessageEncoding messageEncoding) { ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; string testString = "Hello"; BasicHttpBinding binding = null; try { // *** SETUP *** \\ binding = new BasicHttpBinding(BasicHttpSecurityMode.None); binding.MessageEncoding = messageEncoding; factory = new ChannelFactory <IWcfService>(binding, new EndpointAddress(Endpoints.HttpBaseAddress_Basic + Enum.GetName(typeof(WSMessageEncoding), messageEncoding))); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ string result = serviceProxy.Echo(testString); // *** VALIDATE *** \\ Assert.True(result == testString, String.Format("Error: expected response from service: '{0}' Actual was: '{1}'", testString, result)); // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
private void InitializeFrom(HttpRelayTransportBindingElement transport, MessageEncodingBindingElement encoding, System.ServiceModel.Channels.ReliableSessionBindingElement session) { this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement textMessageEncodingBindingElement = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = textMessageEncodingBindingElement.WriteEncoding; this.ReaderQuotas = textMessageEncodingBindingElement.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { this.messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement mtomMessageEncodingBindingElement = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = mtomMessageEncodingBindingElement.WriteEncoding; this.ReaderQuotas = mtomMessageEncodingBindingElement.ReaderQuotas; } this.reliableSession.Enabled = session != null; if (session != null) { this.session.InactivityTimeout = session.InactivityTimeout; this.session.Ordered = session.Ordered; } }
public static void HttpExpect100Continue_AnonymousAuth_False(WSMessageEncoding messageEncoding) { ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; BasicHttpBinding binding = null; try { // *** SETUP *** \\ binding = new BasicHttpBinding(BasicHttpSecurityMode.None); binding.MessageEncoding = messageEncoding; factory = new ChannelFactory <IWcfService>(binding, new EndpointAddress(Endpoints.HttpBaseAddress_Basic + Enum.GetName(typeof(WSMessageEncoding), messageEncoding))); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ Dictionary <string, string> requestHeaders = serviceProxy.GetRequestHttpHeaders(); // *** VALIDATE *** \\ string expectHeader = null; bool expectHeaderSent = requestHeaders.TryGetValue("Expect", out expectHeader); Assert.False(expectHeaderSent, "Expect header should not have been sent. Header value:" + expectHeader); // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
private static Binding CreateServiceBinding(WSMessageEncoding messageEncoding) { var binding = new BasicHttpBinding { CloseTimeout = TimeSpan.FromMinutes(5), OpenTimeout = TimeSpan.FromMinutes(5), ReceiveTimeout = TimeSpan.FromHours(5), SendTimeout = TimeSpan.FromHours(5), MaxBufferSize = 4194304, MaxBufferPoolSize = 4194304, MaxReceivedMessageSize = 4194304, MessageEncoding = messageEncoding, TextEncoding = Encoding.UTF8 }; binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None; binding.Security.Transport.Realm = ""; binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; binding.Security.Message.AlgorithmSuite = SecurityAlgorithmSuite.Default; return(binding); }
private void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding, System.ServiceModel.Channels.TransactionFlowBindingElement txFlow, System.ServiceModel.Channels.ReliableSessionBindingElement session) { this.BypassProxyOnLocal = transport.BypassProxyOnLocal; this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement element = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = element.WriteEncoding; this.ReaderQuotas = element.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { this.messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement element2 = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = element2.WriteEncoding; this.ReaderQuotas = element2.ReaderQuotas; } this.TransactionFlow = txFlow.Transactions; this.reliableSession.Enabled = session != null; if (session != null) { this.session.InactivityTimeout = session.InactivityTimeout; this.session.Ordered = session.Ordered; } }
private void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding, TransactionFlowBindingElement txFlow, ReliableSessionBindingElement session) { this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; // this binding only supports Text and Mtom encoding if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement text = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = text.WriteEncoding; this.ReaderQuotas = text.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { _messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement mtom = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = mtom.WriteEncoding; this.ReaderQuotas = mtom.ReaderQuotas; } this.TransactionFlow = txFlow.Transactions; _reliableSession.Enabled = session != null; //session if (session != null) { // only set properties that have standard binding manifestations _session.InactivityTimeout = session.InactivityTimeout; _session.Ordered = session.Ordered; } }
public static void HttpKeepAliveDisabled_Echo_RoundTrips_True(WSMessageEncoding messageEncoding) { ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; BasicHttpBinding binding = null; CustomBinding customBinding = null; try { // *** SETUP *** \\ binding = new BasicHttpBinding(BasicHttpSecurityMode.None); binding.MessageEncoding = messageEncoding; customBinding = new CustomBinding(binding); var httpElement = customBinding.Elements.Find <HttpTransportBindingElement>(); httpElement.KeepAliveEnabled = false; factory = new ChannelFactory <IWcfService>(customBinding, new EndpointAddress(Endpoints.HttpBaseAddress_Basic + Enum.GetName(typeof(WSMessageEncoding), messageEncoding))); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ bool result = serviceProxy.IsHttpKeepAliveDisabled(); // *** VALIDATE *** \\ Assert.True(result, "Error: expected response from service: 'true' Actual was: 'false'"); // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
private void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding) { this.BypassProxyOnLocal = transport.BypassProxyOnLocal; this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxBufferSize = transport.MaxBufferSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.TransferMode = transport.TransferMode; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; this.Security.Transport.ExtendedProtectionPolicy = transport.ExtendedProtectionPolicy; if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement element = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = element.WriteEncoding; this.ReaderQuotas = element.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { this.messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement element2 = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = element2.WriteEncoding; this.ReaderQuotas = element2.ReaderQuotas; } }
internal static bool IsDefined(WSMessageEncoding value) { if (value != WSMessageEncoding.Text) { return (value == WSMessageEncoding.Mtom); } return true; }
public static void BasicHttpBinding( TestContext context, MetadataSet doc, WSMessageEncoding encoding, TestLabel label) { BasicHttpBinding( context, doc, BasicHttpSecurityMode.None, encoding, HttpClientCredentialType.None, AuthenticationSchemes.Anonymous, label); }
private Binding GetBasicHttpBinding(WSMessageEncoding messageEncoding) { var binding = new BasicHttpBinding(); binding.MessageEncoding = messageEncoding; binding.Name = Enum.GetName(typeof(WSMessageEncoding), messageEncoding); return(binding); }
internal static bool IsDefined(WSMessageEncoding value) { if (value != WSMessageEncoding.Text) { return(value == WSMessageEncoding.Mtom); } return(true); }
private Binding GetWSHttpBinding(WSMessageEncoding messageEncoding) { var binding = new WSHttpBinding(SecurityMode.None); binding.MessageEncoding = messageEncoding; binding.Name = Enum.GetName(typeof(WSMessageEncoding), messageEncoding); return(binding); }
private void Initialize() { this.httpTransport = new HttpTransportBindingElement(); this.httpsTransport = new HttpsTransportBindingElement(); this.messageEncoding = WSMessageEncoding.Text; this.textEncoding = new TextMessageEncodingBindingElement(); this.textEncoding.MessageVersion = MessageVersion.Soap11; this.mtomEncoding = new MtomMessageEncodingBindingElement(); this.mtomEncoding.MessageVersion = MessageVersion.Soap11; }
public static void BasicHttpsBinding( TestContext context, MetadataSet doc, BasicHttpSecurityMode security, WSMessageEncoding encoding, HttpClientCredentialType clientCred, AuthenticationSchemes authScheme, TestLabel label) { label.EnterScope("basicHttpsBinding"); BasicHttpBinding_inner( context, doc, security, encoding, clientCred, authScheme, true, label); label.LeaveScope(); }
public static void HttpMessageHandlerFactory_ModifyContent_Success(WSMessageEncoding messageEncoding) { ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; string testString = "Hello"; string substituteString = "World"; BasicHttpBinding binding = null; try { // *** SETUP *** \\ binding = new BasicHttpBinding(BasicHttpSecurityMode.None); binding.MessageEncoding = messageEncoding; factory = new ChannelFactory <IWcfService>(binding, new EndpointAddress(Endpoints.HttpBaseAddress_Basic + Enum.GetName(typeof(WSMessageEncoding), messageEncoding))); var handlerFactoryBehavior = new HttpMessageHandlerBehavior(); handlerFactoryBehavior.OnSendingAsync = (message, token) => { var oldContent = message.Content; string requestMessageBody = oldContent.ReadAsStringAsync().Result; requestMessageBody = requestMessageBody.Replace(testString, substituteString); message.Content = new StringContent(requestMessageBody); foreach (var header in oldContent.Headers) { if (!header.Key.Equals("Content-Length") && message.Content.Headers.Contains(header.Key)) { message.Content.Headers.Remove(header.Key); } message.Content.Headers.Add(header.Key, header.Value); } return(Task.FromResult((HttpResponseMessage)null)); }; factory.Endpoint.Behaviors.Add(handlerFactoryBehavior); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ string result = serviceProxy.Echo("Hello"); // *** VALIDATE *** \\ Assert.True(result == substituteString, String.Format("Error: expected response from service: '{0}' Actual was: '{1}'", testString, result)); // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
internal override void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding) { base.InitializeFrom(transport, encoding); // BasicHttpBinding only supports Text and Mtom encoding if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; } else if (encoding is MtomMessageEncodingBindingElement) { _messageEncoding = WSMessageEncoding.Mtom; } }
private void Initialize() { this.httpTransport = new HttpTransportBindingElement(); this.httpsTransport = new HttpsTransportBindingElement(); this.messageEncoding = WSMessageEncoding.Text; this.txFlow = GetDefaultTransactionFlowBindingElement(); this.session = new System.ServiceModel.Channels.ReliableSessionBindingElement(true); this.textEncoding = new TextMessageEncodingBindingElement(); this.textEncoding.MessageVersion = MessageVersion.Soap12WSAddressing10; this.mtomEncoding = new MtomMessageEncodingBindingElement(); this.mtomEncoding.MessageVersion = MessageVersion.Soap12WSAddressing10; this.reliableSession = new OptionalReliableSession(this.session); }
void Initialize() { httpTransport = new HttpTransportBindingElement(); httpsTransport = new HttpsTransportBindingElement(); messageEncoding = WSHttpBindingDefaults.MessageEncoding; txFlow = GetDefaultTransactionFlowBindingElement(); session = new ReliableSessionBindingElement(true); textEncoding = new TextMessageEncodingBindingElement(); textEncoding.MessageVersion = MessageVersion.Soap12WSAddressing10; mtomEncoding = new MtomMessageEncodingBindingElement(); mtomEncoding.MessageVersion = MessageVersion.Soap12WSAddressing10; reliableSession = new OptionalReliableSession(session); }
private void Initialize() { this.httpTransport = new HttpRelayTransportBindingElement(); this.httpsTransport = new HttpsRelayTransportBindingElement(); this.messageEncoding = WSMessageEncoding.Text; this.textEncoding = new TextMessageEncodingBindingElement() { MessageVersion = System.ServiceModel.Channels.MessageVersion.Soap11 }; this.mtomEncoding = new MtomMessageEncodingBindingElement() { MessageVersion = System.ServiceModel.Channels.MessageVersion.Soap11 }; }
void Initialize() { this.httpTransport = new HttpTransportBindingElement(); this.messageEncoding = WSDualHttpBindingDefaults.MessageEncoding; this.txFlow = GetDefaultTransactionFlowBindingElement(); this.session = new ReliableSessionBindingElement(true); this.textEncoding = new TextMessageEncodingBindingElement(); this.textEncoding.MessageVersion = MessageVersion.Soap12WSAddressing10; this.mtomEncoding = new MtomMessageEncodingBindingElement(); this.mtomEncoding.MessageVersion = MessageVersion.Soap12WSAddressing10; this.compositeDuplex = new CompositeDuplexBindingElement(); this.reliableSession = new ReliableSession(session); this.oneWay = new OneWayBindingElement(); }
public WcfBasicHttpBinding(TimeSpan objCloseTimeout, TimeSpan objOpenTimeout, TimeSpan objReceiveTimeout, TimeSpan objSendTimeOut, HostNameComparisonMode enuHostNameComparisonMode, int intMaxBufferSize, long lngMaxBufferPoolSize, long lngMaxReceivedMessageSize, WSMessageEncoding enuMessageEncoding, WcfReaderQuotas objReaderQuotas, BasicHttpSecurityMode enuSecurityMode, TransferMode enuTransferMode) : base() { CloseTimeout = objCloseTimeout; OpenTimeout = objOpenTimeout; ReceiveTimeout = objReceiveTimeout; SendTimeout = objSendTimeOut; HostNameComparisonMode = enuHostNameComparisonMode; MaxBufferSize = intMaxBufferSize; MaxBufferPoolSize = lngMaxBufferPoolSize; MaxReceivedMessageSize = lngMaxReceivedMessageSize; MessageEncoding = enuMessageEncoding; ReaderQuotas = objReaderQuotas; SecurityMode = enuSecurityMode; TransferMode = enuTransferMode; }
private void Initialize() { WSHttpBinding wSHttpBinding = new WSHttpBinding(); this.httpTransport = new HttpRelayTransportBindingElement(); this.httpsTransport = new HttpsRelayTransportBindingElement(); this.messageEncoding = wSHttpBinding.MessageEncoding; this.session = new System.ServiceModel.Channels.ReliableSessionBindingElement(true); this.textEncoding = new TextMessageEncodingBindingElement() { MessageVersion = System.ServiceModel.Channels.MessageVersion.Soap12WSAddressing10 }; this.mtomEncoding = new MtomMessageEncodingBindingElement() { MessageVersion = System.ServiceModel.Channels.MessageVersion.Soap12WSAddressing10 }; this.reliableSession = new OptionalReliableSession(this.session); }
public static void MultiValue_UserAgent_Success(WSMessageEncoding messageEncoding) { ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; BasicHttpBinding binding = null; string userAgent = "Mozilla/4.0 (compatible; MSIE 6.0; .Net Core WCF Scenario Test Client 1.2.3.4)"; string userAgentHeaderName = "User-Agent"; try { // *** SETUP *** \\ binding = new BasicHttpBinding(BasicHttpSecurityMode.None); binding.MessageEncoding = messageEncoding; factory = new ChannelFactory <IWcfService>(binding, new EndpointAddress(Endpoints.HttpBaseAddress_Basic + Enum.GetName(typeof(WSMessageEncoding), messageEncoding))); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ Dictionary <string, string> requestHeaders; using (new OperationContextScope((IContextChannel)serviceProxy)) { HttpRequestMessageProperty httpReqMsgProp = new HttpRequestMessageProperty(); httpReqMsgProp.Headers[userAgentHeaderName] = userAgent; OperationContext.Current.OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name, httpReqMsgProp); requestHeaders = serviceProxy.GetRequestHttpHeaders(); } // *** VALIDATE *** \\ bool userAgentHeaderSent = requestHeaders.TryGetValue(userAgentHeaderName, out string userAgentHeader); Assert.True(userAgentHeaderSent, "User-Agent header should have been sent."); Assert.Equal(userAgent, userAgentHeader); // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
void InitializeFrom( HttpTransportBindingElement transport, MessageEncodingBindingElement encoding, TransactionFlowBindingElement txFlow, ReliableSessionBindingElement session, CompositeDuplexBindingElement compositeDuplex, OneWayBindingElement oneWay) { // transport this.BypassProxyOnLocal = transport.BypassProxyOnLocal; this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; // this binding only supports Text and Mtom encoding if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement text = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = text.WriteEncoding; this.ReaderQuotas = text.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement mtom = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = mtom.WriteEncoding; this.ReaderQuotas = mtom.ReaderQuotas; } this.TransactionFlow = txFlow.Transactions; this.ClientBaseAddress = compositeDuplex.ClientBaseAddress; //session if (session != null) { // only set properties that have standard binding manifestations this.session.InactivityTimeout = session.InactivityTimeout; this.session.Ordered = session.Ordered; } }
public static void HttpMessageHandlerFactory_Success(WSMessageEncoding messageEncoding) { ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; string testString = "Hello"; BasicHttpBinding binding = null; try { // *** SETUP *** \\ binding = new BasicHttpBinding(BasicHttpSecurityMode.None); binding.MessageEncoding = messageEncoding; factory = new ChannelFactory <IWcfService>(binding, new EndpointAddress(Endpoints.HttpBaseAddress_Basic + Enum.GetName(typeof(WSMessageEncoding), messageEncoding))); var handlerFactoryBehavior = new HttpMessageHandlerBehavior(); bool handlerCalled = false; handlerFactoryBehavior.OnSendingAsync = (message, token) => { handlerCalled = true; return(Task.FromResult((HttpResponseMessage)null)); }; factory.Endpoint.Behaviors.Add(handlerFactoryBehavior); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ string result = serviceProxy.Echo("Hello"); // *** VALIDATE *** \\ Assert.True(handlerCalled, "Error: expected client to call intercepting handler"); Assert.True(result == testString, String.Format("Error: expected response from service: '{0}' Actual was: '{1}'", testString, result)); // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
public static void DefaultSettings_Echo_RoundTrips_String(WSMessageEncoding messageEncoding) { ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; string testString = "Hello"; try { // *** SETUP *** \\ BasicHttpsBinding basicHttpsBinding = new BasicHttpsBinding(BasicHttpsSecurityMode.Transport); basicHttpsBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; basicHttpsBinding.MessageEncoding = messageEncoding; string clientCertThumb = ServiceUtilHelper.ClientCertificate.Thumbprint; factory = new ChannelFactory <IWcfService>(basicHttpsBinding, new EndpointAddress(Endpoints.Https_DefaultBinding_Address + Enum.GetName(typeof(WSMessageEncoding), messageEncoding))); factory.Credentials.ClientCertificate.SetCertificate( StoreLocation.CurrentUser, StoreName.My, X509FindType.FindByThumbprint, clientCertThumb); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ string result = serviceProxy.Echo(testString); // *** VALIDATE *** \\ Assert.True(result == testString, String.Format("Error: expected response from service: '{0}' Actual was: '{1}'", testString, result)); // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
public WcfNetTcpBinding(TimeSpan objCloseTimeout, TimeSpan objOpenTimeout, TimeSpan objReceiveTimeout, TimeSpan objSendTimeOut, HostNameComparisonMode enuHostNameComparisonMode, long lngMaxBufferPoolSize, long lngMaxReceivedMessageSize, bool blnPortSharingEnabled, bool blnTransactionFlow, int intMaxBufferSize, int intMaxConnections, int intListenBacklog, TransferMode enuTransferMode, WSMessageEncoding enuMessageEncoding, WcfReaderQuotas objReaderQuotas, WcfOptionalReliableSession objReliableSession, SecurityMode enuSecurityMode) : base() { CloseTimeout = objCloseTimeout; OpenTimeout = objOpenTimeout; ReceiveTimeout = objReceiveTimeout; SendTimeout = objSendTimeOut; HostNameComparisonMode = enuHostNameComparisonMode; MaxBufferPoolSize = lngMaxBufferPoolSize; MaxReceivedMessageSize = lngMaxReceivedMessageSize; PortSharingEnabled = blnPortSharingEnabled; TransactionFlow = blnTransactionFlow; MaxBufferSize = intMaxBufferSize; MaxConnections = intMaxConnections; ListenBacklog = intListenBacklog; TransferMode = enuTransferMode; MessageEncoding = enuMessageEncoding; ReliableSession = objReliableSession; ReaderQuotas = objReaderQuotas; }
private void InitializeFrom(HttpRelayTransportBindingElement transport, MessageEncodingBindingElement encoding) { this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxBufferSize = transport.MaxBufferSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.TransferMode = transport.TransferMode; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement textMessageEncodingBindingElement = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = textMessageEncodingBindingElement.WriteEncoding; this.ReaderQuotas = textMessageEncodingBindingElement.ReaderQuotas; return; } if (encoding is MtomMessageEncodingBindingElement) { this.messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement mtomMessageEncodingBindingElement = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = mtomMessageEncodingBindingElement.WriteEncoding; this.ReaderQuotas = mtomMessageEncodingBindingElement.ReaderQuotas; } }
public static void BasicHttpsBinding ( TestContext context, MetadataSet doc, BasicHttpSecurityMode security, WSMessageEncoding encoding, HttpClientCredentialType clientCred, AuthenticationSchemes authScheme, TestLabel label) { label.EnterScope ("basicHttpsBinding"); var sd = (WS.ServiceDescription)doc.MetadataSections [0].Metadata; label.EnterScope ("wsdl"); Assert.That (sd.Extensions, Is.Not.Null, label.Get ()); Assert.That (sd.Extensions.Count, Is.EqualTo (1), label.Get ()); Assert.That (sd.Extensions [0], Is.InstanceOfType (typeof(XmlElement)), label.Get ()); label.EnterScope ("extensions"); var extension = (XmlElement)sd.Extensions [0]; Assert.That (extension.NamespaceURI, Is.EqualTo (WspNamespace), label.Get ()); Assert.That (extension.LocalName, Is.EqualTo ("Policy"), label.Get ()); label.LeaveScope (); label.EnterScope ("bindings"); Assert.That (sd.Bindings.Count, Is.EqualTo (1), label.Get ()); var binding = sd.Bindings [0]; Assert.That (binding.ExtensibleAttributes, Is.Null, label.Get ()); Assert.That (binding.Extensions, Is.Not.Null, label.Get ()); label.LeaveScope (); WS.SoapBinding soap = null; XmlElement xml = null; foreach (var ext in binding.Extensions) { if (ext is WS.SoapBinding) soap = (WS.SoapBinding)ext; else if (ext is XmlElement) xml = (XmlElement)ext; } CheckSoapBinding (soap, WS.SoapBinding.HttpTransport, label); if (context.CheckPolicyXml) { label.EnterScope ("policy-xml"); Assert.That (xml, Is.Not.Null, label.Get ()); Assert.That (xml.NamespaceURI, Is.EqualTo (WspNamespace), label.Get ()); Assert.That (xml.LocalName, Is.EqualTo ("PolicyReference"), label.Get ()); label.LeaveScope (); } label.LeaveScope (); // wsdl var importer = new WsdlImporter (doc); label.EnterScope ("bindings"); var bindings = importer.ImportAllBindings (); CheckImportErrors (importer, label); Assert.That (bindings, Is.Not.Null, label.Get ()); Assert.That (bindings.Count, Is.EqualTo (1), label.Get ()); CheckBasicHttpBinding ( bindings [0], "https", security, encoding, clientCred, authScheme, label); label.LeaveScope (); label.EnterScope ("endpoints"); var endpoints = importer.ImportAllEndpoints (); CheckImportErrors (importer, label); Assert.That (endpoints, Is.Not.Null, label.Get ()); Assert.That (endpoints.Count, Is.EqualTo (1), label.Get ()); CheckEndpoint (endpoints [0], MetadataSamples.HttpsUri, label); label.LeaveScope (); label.LeaveScope (); }
public static void CheckBasicHttpBinding( Binding binding, string scheme, BasicHttpSecurityMode security, WSMessageEncoding encoding, HttpClientCredentialType clientCred, AuthenticationSchemes authScheme, TestLabel label) { label.EnterScope("http"); if (security == BasicHttpSecurityMode.Message) { Assert.That(binding, Is.InstanceOfType(typeof(CustomBinding)), label.Get()); } else { Assert.That(binding, Is.InstanceOfType(typeof(BasicHttpBinding)), label.Get()); var basicHttp = (BasicHttpBinding)binding; Assert.That(basicHttp.EnvelopeVersion, Is.EqualTo(EnvelopeVersion.Soap11), label.Get()); Assert.That(basicHttp.MessageVersion, Is.EqualTo(MessageVersion.Soap11), label.Get()); Assert.That(basicHttp.Scheme, Is.EqualTo(scheme), label.Get()); Assert.That(basicHttp.TransferMode, Is.EqualTo(TransferMode.Buffered), label.Get()); Assert.That(basicHttp.MessageEncoding, Is.EqualTo(encoding), label.Get()); Assert.That(basicHttp.Security, Is.Not.Null, label.Get()); Assert.That(basicHttp.Security.Mode, Is.EqualTo(security), label.Get()); Assert.That(basicHttp.Security.Transport.ClientCredentialType, Is.EqualTo(clientCred), label.Get()); Assert.That(basicHttp.Security.Message.AlgorithmSuite, Is.EqualTo(SecurityAlgorithmSuite.Basic256), label.Get()); } label.EnterScope("elements"); var elements = binding.CreateBindingElements(); Assert.That(elements, Is.Not.Null, label.Get()); if ((security == BasicHttpSecurityMode.Message) || (security == BasicHttpSecurityMode.TransportWithMessageCredential)) { Assert.That(elements.Count, Is.EqualTo(3), label.Get()); } else { Assert.That(elements.Count, Is.EqualTo(2), label.Get()); } TextMessageEncodingBindingElement textElement = null; TransportSecurityBindingElement securityElement = null; HttpTransportBindingElement transportElement = null; AsymmetricSecurityBindingElement asymmSecurityElement = null; MtomMessageEncodingBindingElement mtomElement = null; foreach (var element in elements) { if (element is TextMessageEncodingBindingElement) { textElement = (TextMessageEncodingBindingElement)element; } else if (element is HttpTransportBindingElement) { transportElement = (HttpTransportBindingElement)element; } else if (element is TransportSecurityBindingElement) { securityElement = (TransportSecurityBindingElement)element; } else if (element is AsymmetricSecurityBindingElement) { asymmSecurityElement = (AsymmetricSecurityBindingElement)element; } else if (element is MtomMessageEncodingBindingElement) { mtomElement = (MtomMessageEncodingBindingElement)element; } else { Assert.Fail(string.Format( "Unknown element: {0}", element.GetType()), label.Get()); } } label.EnterScope("text"); if (encoding == WSMessageEncoding.Text) { Assert.That(textElement, Is.Not.Null, label.Get()); Assert.That(textElement.WriteEncoding, Is.InstanceOfType(typeof(UTF8Encoding)), label.Get()); } else { Assert.That(textElement, Is.Null, label.Get()); } label.LeaveScope(); label.EnterScope("mtom"); if (encoding == WSMessageEncoding.Mtom) { Assert.That(mtomElement, Is.Not.Null, label.Get()); } else { Assert.That(mtomElement, Is.Null, label.Get()); } label.LeaveScope(); label.EnterScope("security"); if (security == BasicHttpSecurityMode.TransportWithMessageCredential) { Assert.That(securityElement, Is.Not.Null, label.Get()); Assert.That(securityElement.SecurityHeaderLayout, Is.EqualTo(SecurityHeaderLayout.Lax), label.Get()); } else { Assert.That(securityElement, Is.Null, label.Get()); } label.LeaveScope(); label.EnterScope("asymmetric"); if (security == BasicHttpSecurityMode.Message) { Assert.That(asymmSecurityElement, Is.Not.Null, label.Get()); } else { Assert.That(asymmSecurityElement, Is.Null, label.Get()); } label.LeaveScope(); label.EnterScope("transport"); Assert.That(transportElement, Is.Not.Null, label.Get()); Assert.That(transportElement.Realm, Is.Empty, label.Get()); Assert.That(transportElement.Scheme, Is.EqualTo(scheme), label.Get()); Assert.That(transportElement.TransferMode, Is.EqualTo(TransferMode.Buffered), label.Get()); label.EnterScope("auth"); Assert.That(transportElement.AuthenticationScheme, Is.EqualTo(authScheme), label.Get()); label.LeaveScope(); // auth label.LeaveScope(); // transport label.LeaveScope(); // elements label.LeaveScope(); // http }
public static void BasicHttpBinding ( TestContext context, MetadataSet doc, WSMessageEncoding encoding, TestLabel label) { BasicHttpBinding ( context, doc, BasicHttpSecurityMode.None, encoding, HttpClientCredentialType.None, AuthenticationSchemes.Anonymous, label); }
public static void CheckBasicHttpBinding ( Binding binding, string scheme, BasicHttpSecurityMode security, WSMessageEncoding encoding, HttpClientCredentialType clientCred, AuthenticationSchemes authScheme, TestLabel label) { label.EnterScope ("http"); if (security == BasicHttpSecurityMode.Message) { Assert.That (binding, Is.InstanceOfType (typeof(CustomBinding)), label.Get ()); } else { Assert.That (binding, Is.InstanceOfType (typeof(BasicHttpBinding)), label.Get ()); var basicHttp = (BasicHttpBinding)binding; Assert.That (basicHttp.EnvelopeVersion, Is.EqualTo (EnvelopeVersion.Soap11), label.Get ()); Assert.That (basicHttp.MessageVersion, Is.EqualTo (MessageVersion.Soap11), label.Get ()); Assert.That (basicHttp.Scheme, Is.EqualTo (scheme), label.Get ()); Assert.That (basicHttp.TransferMode, Is.EqualTo (TransferMode.Buffered), label.Get ()); Assert.That (basicHttp.MessageEncoding, Is.EqualTo (encoding), label.Get ()); Assert.That (basicHttp.Security, Is.Not.Null, label.Get ()); Assert.That (basicHttp.Security.Mode, Is.EqualTo (security), label.Get ()); Assert.That (basicHttp.Security.Transport.ClientCredentialType, Is.EqualTo (clientCred), label.Get ()); Assert.That (basicHttp.Security.Message.AlgorithmSuite, Is.EqualTo (SecurityAlgorithmSuite.Basic256), label.Get ()); } label.EnterScope ("elements"); var elements = binding.CreateBindingElements (); Assert.That (elements, Is.Not.Null, label.Get ()); if ((security == BasicHttpSecurityMode.Message) || (security == BasicHttpSecurityMode.TransportWithMessageCredential)) Assert.That (elements.Count, Is.EqualTo (3), label.Get ()); else Assert.That (elements.Count, Is.EqualTo (2), label.Get ()); TextMessageEncodingBindingElement textElement = null; TransportSecurityBindingElement securityElement = null; HttpTransportBindingElement transportElement = null; AsymmetricSecurityBindingElement asymmSecurityElement = null; MtomMessageEncodingBindingElement mtomElement = null; foreach (var element in elements) { if (element is TextMessageEncodingBindingElement) textElement = (TextMessageEncodingBindingElement)element; else if (element is HttpTransportBindingElement) transportElement = (HttpTransportBindingElement)element; else if (element is TransportSecurityBindingElement) securityElement = (TransportSecurityBindingElement)element; else if (element is AsymmetricSecurityBindingElement) asymmSecurityElement = (AsymmetricSecurityBindingElement)element; else if (element is MtomMessageEncodingBindingElement) mtomElement = (MtomMessageEncodingBindingElement)element; else Assert.Fail (string.Format ( "Unknown element: {0}", element.GetType ()), label.Get ()); } label.EnterScope ("text"); if (encoding == WSMessageEncoding.Text) { Assert.That (textElement, Is.Not.Null, label.Get ()); Assert.That (textElement.WriteEncoding, Is.InstanceOfType (typeof(UTF8Encoding)), label.Get ()); } else { Assert.That (textElement, Is.Null, label.Get ()); } label.LeaveScope (); label.EnterScope ("mtom"); if (encoding == WSMessageEncoding.Mtom) { Assert.That (mtomElement, Is.Not.Null, label.Get ()); } else { Assert.That (mtomElement, Is.Null, label.Get ()); } label.LeaveScope (); label.EnterScope ("security"); if (security == BasicHttpSecurityMode.TransportWithMessageCredential) { Assert.That (securityElement, Is.Not.Null, label.Get ()); Assert.That (securityElement.SecurityHeaderLayout, Is.EqualTo (SecurityHeaderLayout.Lax), label.Get ()); } else { Assert.That (securityElement, Is.Null, label.Get ()); } label.LeaveScope (); label.EnterScope ("asymmetric"); if (security == BasicHttpSecurityMode.Message) { Assert.That (asymmSecurityElement, Is.Not.Null, label.Get ()); } else { Assert.That (asymmSecurityElement, Is.Null, label.Get ()); } label.LeaveScope (); label.EnterScope ("transport"); Assert.That (transportElement, Is.Not.Null, label.Get ()); Assert.That (transportElement.Realm, Is.Empty, label.Get ()); Assert.That (transportElement.Scheme, Is.EqualTo (scheme), label.Get ()); Assert.That (transportElement.TransferMode, Is.EqualTo (TransferMode.Buffered), label.Get ()); label.EnterScope ("auth"); Assert.That (transportElement.AuthenticationScheme, Is.EqualTo (authScheme), label.Get ()); label.LeaveScope (); // auth label.LeaveScope (); // transport label.LeaveScope (); // elements label.LeaveScope (); // http }
private void Initialize() { this.httpTransport = new HttpTransportBindingElement(); this.messageEncoding = WSMessageEncoding.Text; this.txFlow = GetDefaultTransactionFlowBindingElement(); this.session = new ReliableSessionBindingElement(true); this.textEncoding = new TextMessageEncodingBindingElement(); this.textEncoding.MessageVersion = MessageVersion.Soap12WSAddressing10; this.mtomEncoding = new MtomMessageEncodingBindingElement(); this.mtomEncoding.MessageVersion = MessageVersion.Soap12WSAddressing10; this.compositeDuplex = new CompositeDuplexBindingElement(); this.reliableSession = new System.ServiceModel.ReliableSession(this.session); this.oneWay = new OneWayBindingElement(); }
private void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding, TransactionFlowBindingElement txFlow, ReliableSessionBindingElement session, CompositeDuplexBindingElement compositeDuplex, OneWayBindingElement oneWay) { this.BypassProxyOnLocal = transport.BypassProxyOnLocal; this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement element = (TextMessageEncodingBindingElement) encoding; this.TextEncoding = element.WriteEncoding; this.ReaderQuotas = element.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { this.messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement element2 = (MtomMessageEncodingBindingElement) encoding; this.TextEncoding = element2.WriteEncoding; this.ReaderQuotas = element2.ReaderQuotas; } this.TransactionFlow = txFlow.Transactions; this.ClientBaseAddress = compositeDuplex.ClientBaseAddress; if (session != null) { this.session.InactivityTimeout = session.InactivityTimeout; this.session.Ordered = session.Ordered; } }
void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding, TransactionFlowBindingElement txFlow, ReliableSessionBindingElement session) { // transport this.BypassProxyOnLocal = transport.BypassProxyOnLocal; this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; // this binding only supports Text and Mtom encoding if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement text = (TextMessageEncodingBindingElement)encoding; this.TextEncoding = text.WriteEncoding; this.ReaderQuotas = text.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement mtom = (MtomMessageEncodingBindingElement)encoding; this.TextEncoding = mtom.WriteEncoding; this.ReaderQuotas = mtom.ReaderQuotas; } this.TransactionFlow = txFlow.Transactions; this.reliableSession.Enabled = session != null; //session if (session != null) { // only set properties that have standard binding manifestations this.session.InactivityTimeout = session.InactivityTimeout; this.session.Ordered = session.Ordered; } }
public static void BasicHttpsBinding ( TestContext context, MetadataSet doc, BasicHttpSecurityMode security, WSMessageEncoding encoding, HttpClientCredentialType clientCred, AuthenticationSchemes authScheme, TestLabel label) { label.EnterScope ("basicHttpsBinding"); BasicHttpBinding_inner ( context, doc, security, encoding, clientCred, authScheme, true, label); label.LeaveScope (); }
public static void BasicHttpBinding ( TestContext context, MetadataSet doc, BasicHttpSecurityMode security, WSMessageEncoding encoding, HttpClientCredentialType clientCred, AuthenticationSchemes authScheme, TestLabel label) { label.EnterScope ("basicHttpBinding"); var sd = (WS.ServiceDescription)doc.MetadataSections [0].Metadata; label.EnterScope ("wsdl"); label.EnterScope ("bindings"); Assert.That (sd.Bindings.Count, Is.EqualTo (1), label.Get ()); var binding = sd.Bindings [0]; Assert.That (binding.ExtensibleAttributes, Is.Null, label.Get ()); Assert.That (binding.Extensions, Is.Not.Null, label.Get ()); bool hasPolicyXml; switch (security) { case BasicHttpSecurityMode.None: hasPolicyXml = encoding == WSMessageEncoding.Mtom; break; case BasicHttpSecurityMode.Message: case BasicHttpSecurityMode.Transport: case BasicHttpSecurityMode.TransportWithMessageCredential: if (encoding == WSMessageEncoding.Mtom) throw new InvalidOperationException (); hasPolicyXml = true; break; case BasicHttpSecurityMode.TransportCredentialOnly: hasPolicyXml = true; break; default: throw new InvalidOperationException (); } label.LeaveScope (); WS.SoapBinding soap = null; XmlElement xml = null; foreach (var ext in binding.Extensions) { if (ext is WS.SoapBinding) soap = (WS.SoapBinding)ext; else if (ext is XmlElement) xml = (XmlElement)ext; } CheckSoapBinding (soap, WS.SoapBinding.HttpTransport, label); label.LeaveScope (); label.EnterScope ("policy-xml"); if (!hasPolicyXml) Assert.That (xml, Is.Null, label.Get ()); else if (context.CheckPolicyXml) { Assert.That (xml, Is.Not.Null, label.Get ()); Assert.That (xml.NamespaceURI, Is.EqualTo (WspNamespace), label.Get ()); Assert.That (xml.LocalName, Is.EqualTo ("PolicyReference"), label.Get ()); } label.LeaveScope (); var importer = new WsdlImporter (doc); label.EnterScope ("bindings"); var bindings = importer.ImportAllBindings (); CheckImportErrors (importer, label); Assert.That (bindings, Is.Not.Null, label.Get ()); Assert.That (bindings.Count, Is.EqualTo (1), label.Get ()); string scheme; if ((security == BasicHttpSecurityMode.Transport) || (security == BasicHttpSecurityMode.TransportWithMessageCredential)) scheme = "https"; else scheme = "http"; CheckBasicHttpBinding ( bindings [0], scheme, security, encoding, clientCred, authScheme, label); label.LeaveScope (); label.EnterScope ("endpoints"); var endpoints = importer.ImportAllEndpoints (); CheckImportErrors (importer, label); Assert.That (endpoints, Is.Not.Null, label.Get ()); Assert.That (endpoints.Count, Is.EqualTo (1), label.Get ()); CheckEndpoint (endpoints [0], MetadataSamples.HttpUri, label); label.LeaveScope (); label.LeaveScope (); }
static void BasicHttpBinding_inner ( TestContext context, MetadataSet doc, BasicHttpSecurityMode security, WSMessageEncoding encoding, HttpClientCredentialType clientCred, AuthenticationSchemes authScheme, bool isHttps, TestLabel label) { var sd = (WS.ServiceDescription)doc.MetadataSections [0].Metadata; label.EnterScope ("wsdl"); label.EnterScope ("bindings"); Assert.That (sd.Bindings.Count, Is.EqualTo (1), label.Get ()); var binding = sd.Bindings [0]; Assert.That (binding.ExtensibleAttributes, Is.Null, label.Get ()); Assert.That (binding.Extensions, Is.Not.Null, label.Get ()); bool hasPolicyXml; switch (security) { case BasicHttpSecurityMode.None: if (isHttps) throw new InvalidOperationException (); hasPolicyXml = encoding == WSMessageEncoding.Mtom; break; case BasicHttpSecurityMode.Message: case BasicHttpSecurityMode.Transport: case BasicHttpSecurityMode.TransportWithMessageCredential: if (encoding == WSMessageEncoding.Mtom) throw new InvalidOperationException (); hasPolicyXml = true; break; case BasicHttpSecurityMode.TransportCredentialOnly: if (isHttps) throw new InvalidOperationException (); hasPolicyXml = true; break; default: throw new InvalidOperationException (); } label.LeaveScope (); WS.SoapBinding soap = null; XmlElement xml = null; foreach (var ext in binding.Extensions) { if (ext is WS.SoapBinding) soap = (WS.SoapBinding)ext; else if (ext is XmlElement) xml = (XmlElement)ext; } CheckSoapBinding (soap, WS.SoapBinding.HttpTransport, label); label.LeaveScope (); label.EnterScope ("policy-xml"); if (!hasPolicyXml) Assert.That (xml, Is.Null, label.Get ()); else { Assert.That (xml, Is.Not.Null, label.Get ()); var assertions = AssertPolicy (sd, xml, label); Assert.That (assertions, Is.Not.Null, label.Get ()); if (clientCred == HttpClientCredentialType.Ntlm) AssertPolicy (assertions, NtlmAuthenticationQName, label); if (encoding == WSMessageEncoding.Mtom) AssertPolicy (assertions, MtomEncodingQName, label); switch (security) { case BasicHttpSecurityMode.Message: AssertPolicy (assertions, AsymmetricBindingQName, label); AssertPolicy (assertions, Wss10QName, label); break; case BasicHttpSecurityMode.Transport: AssertPolicy (assertions, TransportBindingQName, label); break; case BasicHttpSecurityMode.TransportWithMessageCredential: AssertPolicy (assertions, SignedSupportingQName, label); AssertPolicy (assertions, TransportBindingQName, label); AssertPolicy (assertions, Wss10QName, label); break; default: break; } Assert.That (assertions.Count, Is.EqualTo (0), label.Get ()); } label.LeaveScope (); label.EnterScope ("services"); Assert.That (sd.Services, Is.Not.Null, label.Get ()); Assert.That (sd.Services.Count, Is.EqualTo (1), label.Get ()); var service = sd.Services [0]; Assert.That (service.Ports, Is.Not.Null, label.Get ()); Assert.That (service.Ports.Count, Is.EqualTo (1), label.Get ()); var port = service.Ports [0]; label.EnterScope ("port"); Assert.That (port.Extensions, Is.Not.Null, label.Get ()); Assert.That (port.Extensions.Count, Is.EqualTo (1), label.Get ()); WS.SoapAddressBinding soap_addr_binding = null; foreach (var extension in port.Extensions) { if (extension is WS.SoapAddressBinding) soap_addr_binding = (WS.SoapAddressBinding)extension; else Assert.Fail (label.Get ()); } Assert.That (soap_addr_binding, Is.Not.Null, label.Get ()); label.LeaveScope (); label.LeaveScope (); // wsdl var importer = new WsdlImporter (doc); label.EnterScope ("bindings"); var bindings = importer.ImportAllBindings (); CheckImportErrors (importer, label); Assert.That (bindings, Is.Not.Null, label.Get ()); Assert.That (bindings.Count, Is.EqualTo (1), label.Get ()); string scheme; if ((security == BasicHttpSecurityMode.Transport) || (security == BasicHttpSecurityMode.TransportWithMessageCredential)) scheme = "https"; else scheme = "http"; CheckBasicHttpBinding ( bindings [0], scheme, security, encoding, clientCred, authScheme, label); label.LeaveScope (); label.EnterScope ("endpoints"); var endpoints = importer.ImportAllEndpoints (); CheckImportErrors (importer, label); Assert.That (endpoints, Is.Not.Null, label.Get ()); Assert.That (endpoints.Count, Is.EqualTo (1), label.Get ()); var uri = isHttps ? MetadataSamples.HttpsUri : MetadataSamples.HttpUri; CheckEndpoint (endpoints [0], uri, label); label.LeaveScope (); }
internal static bool IsDefined(WSMessageEncoding value) { return value == WSMessageEncoding.Text; }
static void BasicHttpBinding_inner( TestContext context, MetadataSet doc, BasicHttpSecurityMode security, WSMessageEncoding encoding, HttpClientCredentialType clientCred, AuthenticationSchemes authScheme, bool isHttps, TestLabel label) { var sd = (WS.ServiceDescription)doc.MetadataSections [0].Metadata; label.EnterScope("wsdl"); label.EnterScope("bindings"); Assert.That(sd.Bindings.Count, Is.EqualTo(1), label.Get()); var binding = sd.Bindings [0]; Assert.That(binding.ExtensibleAttributes, Is.Null, label.Get()); Assert.That(binding.Extensions, Is.Not.Null, label.Get()); bool hasPolicyXml; switch (security) { case BasicHttpSecurityMode.None: if (isHttps) { throw new InvalidOperationException(); } hasPolicyXml = encoding == WSMessageEncoding.Mtom; break; case BasicHttpSecurityMode.Message: case BasicHttpSecurityMode.Transport: case BasicHttpSecurityMode.TransportWithMessageCredential: if (encoding == WSMessageEncoding.Mtom) { throw new InvalidOperationException(); } hasPolicyXml = true; break; case BasicHttpSecurityMode.TransportCredentialOnly: if (isHttps) { throw new InvalidOperationException(); } hasPolicyXml = true; break; default: throw new InvalidOperationException(); } label.LeaveScope(); WS.SoapBinding soap = null; XmlElement xml = null; foreach (var ext in binding.Extensions) { if (ext is WS.SoapBinding) { soap = (WS.SoapBinding)ext; } else if (ext is XmlElement) { xml = (XmlElement)ext; } } CheckSoapBinding(soap, WS.SoapBinding.HttpTransport, label); label.LeaveScope(); label.EnterScope("policy-xml"); if (!hasPolicyXml) { Assert.That(xml, Is.Null, label.Get()); } else { Assert.That(xml, Is.Not.Null, label.Get()); var assertions = AssertPolicy(sd, xml, label); Assert.That(assertions, Is.Not.Null, label.Get()); if (clientCred == HttpClientCredentialType.Ntlm) { AssertPolicy(assertions, NtlmAuthenticationQName, label); } if (encoding == WSMessageEncoding.Mtom) { AssertPolicy(assertions, MtomEncodingQName, label); } switch (security) { case BasicHttpSecurityMode.Message: AssertPolicy(assertions, AsymmetricBindingQName, label); AssertPolicy(assertions, Wss10QName, label); break; case BasicHttpSecurityMode.Transport: AssertPolicy(assertions, TransportBindingQName, label); break; case BasicHttpSecurityMode.TransportWithMessageCredential: AssertPolicy(assertions, SignedSupportingQName, label); AssertPolicy(assertions, TransportBindingQName, label); AssertPolicy(assertions, Wss10QName, label); break; default: break; } Assert.That(assertions.Count, Is.EqualTo(0), label.Get()); } label.LeaveScope(); label.EnterScope("services"); Assert.That(sd.Services, Is.Not.Null, label.Get()); Assert.That(sd.Services.Count, Is.EqualTo(1), label.Get()); var service = sd.Services [0]; Assert.That(service.Ports, Is.Not.Null, label.Get()); Assert.That(service.Ports.Count, Is.EqualTo(1), label.Get()); var port = service.Ports [0]; label.EnterScope("port"); Assert.That(port.Extensions, Is.Not.Null, label.Get()); Assert.That(port.Extensions.Count, Is.EqualTo(1), label.Get()); WS.SoapAddressBinding soap_addr_binding = null; foreach (var extension in port.Extensions) { if (extension is WS.SoapAddressBinding) { soap_addr_binding = (WS.SoapAddressBinding)extension; } else { Assert.Fail(label.Get()); } } Assert.That(soap_addr_binding, Is.Not.Null, label.Get()); label.LeaveScope(); label.LeaveScope(); // wsdl var importer = new WsdlImporter(doc); label.EnterScope("bindings"); var bindings = importer.ImportAllBindings(); CheckImportErrors(importer, label); Assert.That(bindings, Is.Not.Null, label.Get()); Assert.That(bindings.Count, Is.EqualTo(1), label.Get()); string scheme; if ((security == BasicHttpSecurityMode.Transport) || (security == BasicHttpSecurityMode.TransportWithMessageCredential)) { scheme = "https"; } else { scheme = "http"; } CheckBasicHttpBinding( bindings [0], scheme, security, encoding, clientCred, authScheme, label); label.LeaveScope(); label.EnterScope("endpoints"); var endpoints = importer.ImportAllEndpoints(); CheckImportErrors(importer, label); Assert.That(endpoints, Is.Not.Null, label.Get()); Assert.That(endpoints.Count, Is.EqualTo(1), label.Get()); var uri = isHttps ? MetadataSamples.HttpsUri : MetadataSamples.HttpUri; CheckEndpoint(endpoints [0], uri, label); label.LeaveScope(); }
private void InitializeFrom(HttpTransportBindingElement transport, MessageEncodingBindingElement encoding) { this.BypassProxyOnLocal = transport.BypassProxyOnLocal; this.HostNameComparisonMode = transport.HostNameComparisonMode; this.MaxBufferPoolSize = transport.MaxBufferPoolSize; this.MaxBufferSize = transport.MaxBufferSize; this.MaxReceivedMessageSize = transport.MaxReceivedMessageSize; this.ProxyAddress = transport.ProxyAddress; this.TransferMode = transport.TransferMode; this.UseDefaultWebProxy = transport.UseDefaultWebProxy; this.Security.Transport.ExtendedProtectionPolicy = transport.ExtendedProtectionPolicy; if (encoding is TextMessageEncodingBindingElement) { this.MessageEncoding = WSMessageEncoding.Text; TextMessageEncodingBindingElement element = (TextMessageEncodingBindingElement) encoding; this.TextEncoding = element.WriteEncoding; this.ReaderQuotas = element.ReaderQuotas; } else if (encoding is MtomMessageEncodingBindingElement) { this.messageEncoding = WSMessageEncoding.Mtom; MtomMessageEncodingBindingElement element2 = (MtomMessageEncodingBindingElement) encoding; this.TextEncoding = element2.WriteEncoding; this.ReaderQuotas = element2.ReaderQuotas; } }