Summary

Class:WireMock.Http.HttpClientHelper
Assembly:WireMock.Net
File(s):C:\Users\azureuser\Documents\Github\WireMock.Net\src\WireMock.Net\Http\HttpClientHelper.cs
Covered lines:23
Uncovered lines:5
Coverable lines:28
Total lines:78
Line coverage:82.1%
Branch coverage:50%

Metrics

MethodCyclomatic complexity  NPath complexity  Sequence coverage  Branch coverage  
CreateHttpClient(...)3266.6766.67
SendAsync()50100100

File(s)

C:\Users\azureuser\Documents\Github\WireMock.Net\src\WireMock.Net\Http\HttpClientHelper.cs

#LineLine coverage
 1using System;
 2using System.Net;
 3using System.Net.Http;
 4using System.Threading.Tasks;
 5using JetBrains.Annotations;
 6using WireMock.HttpsCertificate;
 7using WireMock.Validation;
 8
 9namespace WireMock.Http
 10{
 11    internal static class HttpClientHelper
 12    {
 13        public static HttpClient CreateHttpClient(string clientX509Certificate2ThumbprintOrSubjectName = null)
 814        {
 15#if NETSTANDARD
 16            var handler = new HttpClientHandler
 17            {
 18                CheckCertificateRevocationList = false,
 19                SslProtocols = System.Security.Authentication.SslProtocols.Tls12 | System.Security.Authentication.SslPro
 20                ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true,
 21                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
 22            };
 23#elif NET46
 24            var handler = new HttpClientHandler
 25            {
 26                ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true,
 27                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
 28            };
 29            ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
 30#else
 831            var handler = new WebRequestHandler
 832            {
 833                ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true,
 834                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
 835            };
 836            ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
 37#endif
 38
 839             if (!string.IsNullOrEmpty(clientX509Certificate2ThumbprintOrSubjectName))
 040            {
 041                handler.ClientCertificateOptions = ClientCertificateOption.Manual;
 42
 043                var x509Certificate2 = ClientCertificateHelper.GetCertificate(clientX509Certificate2ThumbprintOrSubjectN
 044                handler.ClientCertificates.Add(x509Certificate2);
 045            }
 46
 47            // For proxy we shouldn't follow auto redirects
 848            handler.AllowAutoRedirect = false;
 49
 50            // If UseCookies enabled, httpClient ignores Cookie header
 851            handler.UseCookies = false;
 52
 853            var client = new HttpClient(handler);
 54#if NET452 || NET46
 855            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityPro
 56#endif
 857            return client;
 858        }
 59
 60        public static async Task<ResponseMessage> SendAsync([NotNull] HttpClient client, [NotNull] RequestMessage reques
 861        {
 862            Check.NotNull(client, nameof(client));
 863            Check.NotNull(requestMessage, nameof(requestMessage));
 64
 865            var originalUri = new Uri(requestMessage.Url);
 866            var requiredUri = new Uri(url);
 67
 68            // Create HttpRequestMessage
 869            var httpRequestMessage = HttpRequestMessageHelper.Create(requestMessage, url);
 70
 71            // Call the URL
 872            var httpResponseMessage = await client.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseContentRea
 73
 74            // Parse httpResponseMessage
 875            return await HttpResponseMessageHelper.Create(httpResponseMessage, requiredUri, originalUri);
 876        }
 77    }
 78}