[Issue(0000, Framework = FrameworkID.NetNative)] // Expect100Continue header is not supported in UWP. public static void HttpExpect100Continue_DigestAuthentication_True() { ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; BasicHttpBinding binding; try { // *** SETUP *** \\ binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly); binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Digest; factory = new ChannelFactory <IWcfService>(binding, new EndpointAddress(Endpoints.Http_DigestAuth_NoDomain_Address)); string DigestUsernameHeaderName = "DigestUsername"; string DigestPasswordHeaderName = "DigestPassword"; string DigestRealmHeaderName = "DigestRealm"; string username = Guid.NewGuid().ToString("n").Substring(0, 8); string password = Guid.NewGuid().ToString("n").Substring(0, 16); string realm = Guid.NewGuid().ToString("n").Substring(0, 5); factory.Credentials.HttpDigest.ClientCredential = new NetworkCredential(username, password, realm); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ Dictionary <string, string> requestHeaders = null; using (var scope = new OperationContextScope((IContextChannel)serviceProxy)) { HttpRequestMessageProperty requestMessageProperty; if (!OperationContext.Current.OutgoingMessageProperties.ContainsKey(HttpRequestMessageProperty.Name)) { requestMessageProperty = new HttpRequestMessageProperty(); OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestMessageProperty; } else { requestMessageProperty = (HttpRequestMessageProperty)OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name]; } requestMessageProperty.Headers[DigestUsernameHeaderName] = username; requestMessageProperty.Headers[DigestPasswordHeaderName] = password; requestMessageProperty.Headers[DigestRealmHeaderName] = realm; requestHeaders = serviceProxy.GetRequestHttpHeaders(); } // *** VALIDATE *** \\ bool expectHeaderSent = requestHeaders.TryGetValue("Expect", out var expectHeader); Assert.True(expectHeaderSent, "Expect header should have been sent but wasn't"); Assert.Equal("100-Continue", expectHeader, StringComparer.OrdinalIgnoreCase); // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
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); } }
public static void HttpExpect100Continue_ClientCertificate_True() { string clientCertThumb = null; EndpointAddress endpointAddress = null; ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; try { // *** SETUP *** \\ BasicHttpsBinding basicHttpsBinding = new BasicHttpsBinding(BasicHttpsSecurityMode.Transport); basicHttpsBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; endpointAddress = new EndpointAddress(new Uri(Endpoints.Https_ClientCertificateAuth_Address)); clientCertThumb = ServiceUtilHelper.ClientCertificate.Thumbprint; factory = new ChannelFactory <IWcfService>(basicHttpsBinding, endpointAddress); factory.Credentials.ClientCertificate.SetCertificate( StoreLocation.CurrentUser, StoreName.My, X509FindType.FindByThumbprint, clientCertThumb); serviceProxy = factory.CreateChannel(); // *** EXECUTE *** \\ Dictionary <string, string> requestHeaders = serviceProxy.GetRequestHttpHeaders(); // *** VALIDATE *** \\ bool expectHeaderSent = requestHeaders.TryGetValue("Expect", out var expectHeader); Assert.True(expectHeaderSent, "Expect header should have been sent but wasn't"); Assert.Equal("100-Continue", expectHeader, StringComparer.OrdinalIgnoreCase); // *** CLEANUP *** \\ ((ICommunicationObject)serviceProxy).Close(); factory.Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }
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); } }
public static void Invalid_UserAgent_Failure() { ChannelFactory <IWcfService> factory = null; IWcfService serviceProxy = null; BasicHttpBinding binding = null; string userAgent = "("; string userAgentHeaderName = "User-Agent"; try { // *** SETUP *** \\ binding = new BasicHttpBinding(BasicHttpSecurityMode.None); factory = new ChannelFactory <IWcfService>(binding, new EndpointAddress(Endpoints.HttpBaseAddress_Basic_Text)); 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); Assert.Throws <FormatException>(() => { requestHeaders = serviceProxy.GetRequestHttpHeaders(); }); } // *** VALIDATE *** \\ // *** CLEANUP *** \\ factory.Close(); ((ICommunicationObject)serviceProxy).Close(); } finally { // *** ENSURE CLEANUP *** \\ ScenarioTestHelpers.CloseCommunicationObjects((ICommunicationObject)serviceProxy, factory); } }