Summary

Class:WireMock.Http.HttpRequestMessageHelper
Assembly:WireMock.Net
File(s):C:\Users\StefHeyenrath\Documents\GitHub\WireMock.Net\src\WireMock.Net\Http\HttpRequestMessageHelper.cs
Covered lines:50
Uncovered lines:5
Coverable lines:55
Total lines:86
Line coverage:90.9%
Branch coverage:94.4%

Metrics

MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage
Create(...)000.9090.944

File(s)

C:\Users\StefHeyenrath\Documents\GitHub\WireMock.Net\src\WireMock.Net\Http\HttpRequestMessageHelper.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Net.Http;
 5using System.Text;
 6using MimeKit;
 7using Newtonsoft.Json;
 8
 9namespace WireMock.Http
 10{
 11    internal static class HttpRequestMessageHelper
 12    {
 13        public static HttpRequestMessage Create(RequestMessage requestMessage, string url)
 714        {
 715            var httpRequestMessage = new HttpRequestMessage(new HttpMethod(requestMessage.Method), url);
 16
 717            ContentType contentType = null;
 718            if (requestMessage.Headers != null && requestMessage.Headers.ContainsKey(HttpKnownHeaderNames.ContentType))
 419            {
 420                var value = requestMessage.Headers[HttpKnownHeaderNames.ContentType].FirstOrDefault();
 421                ContentType.TryParse(value, out contentType);
 422            }
 23
 24            // Set Body if present
 725            if (requestMessage.BodyAsBytes != null)
 126            {
 127                httpRequestMessage.Content = new ByteArrayContent(requestMessage.BodyAsBytes);
 128            }
 629            else if (requestMessage.BodyAsJson != null)
 230            {
 231                if (contentType != null)
 132                {
 133                    var encoding = requestMessage.BodyEncoding ?? Encoding.GetEncoding(contentType.Charset ?? "UTF-8");
 134                    httpRequestMessage.Content = new StringContent(JsonConvert.SerializeObject(requestMessage.BodyAsJson
 135                }
 36                else
 137                {
 138                    httpRequestMessage.Content = new StringContent(JsonConvert.SerializeObject(requestMessage.BodyAsJson
 139                }
 240            }
 441            else if (requestMessage.Body != null)
 442            {
 443                if (contentType != null)
 344                {
 345                    var encoding = requestMessage.BodyEncoding ?? Encoding.GetEncoding(contentType.Charset ?? "UTF-8");
 346                    httpRequestMessage.Content = new StringContent(requestMessage.Body, encoding, contentType.MimeType);
 347                }
 48                else
 149                {
 150                    httpRequestMessage.Content = new StringContent(requestMessage.Body, requestMessage.BodyEncoding);
 151                }
 452            }
 53
 54            // Overwrite the host header
 755            httpRequestMessage.Headers.Host = new Uri(url).Authority;
 56
 57            // Set other headers if present and if not excluded
 758            if (requestMessage.Headers == null || requestMessage.Headers.Count == 0)
 259            {
 260                return httpRequestMessage;
 61            }
 62
 563            var excludeHeaders = new List<string> { HttpKnownHeaderNames.Host, HttpKnownHeaderNames.ContentLength };
 564            if (contentType != null)
 465            {
 466                excludeHeaders.Add(HttpKnownHeaderNames.ContentType);
 467            }
 68
 2269            foreach (var header in requestMessage.Headers.Where(h => !excludeHeaders.Contains(h.Key, StringComparer.Ordi
 170            {
 71                // Try to add to request headers. If failed - try to add to content headers
 172                if (httpRequestMessage.Headers.Contains(header.Key))
 073                {
 074                    continue;
 75                }
 76
 177                if (!httpRequestMessage.Headers.TryAddWithoutValidation(header.Key, header.Value))
 078                {
 079                    httpRequestMessage.Content.Headers.TryAddWithoutValidation(header.Key, header.Value);
 080                }
 181            }
 82
 583            return httpRequestMessage;
 784        }
 85    }
 86}