Summary

Class:WireMock.Http.HttpRequestMessageHelper
Assembly:WireMock.Net
File(s):C:\Users\azureuser\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:87.5%

Metrics

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

File(s)

C:\Users\azureuser\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)
 1514        {
 1515            var httpRequestMessage = new HttpRequestMessage(new HttpMethod(requestMessage.Method), url);
 16
 1517            ContentType contentType = null;
 1518             if (requestMessage.Headers != null && requestMessage.Headers.ContainsKey(HttpKnownHeaderNames.ContentType))
 719            {
 720                var value = requestMessage.Headers[HttpKnownHeaderNames.ContentType].FirstOrDefault();
 721                ContentType.TryParse(value, out contentType);
 722            }
 23
 24            // Set Body if present
 1525             if (requestMessage.BodyAsBytes != null)
 126            {
 127                httpRequestMessage.Content = new ByteArrayContent(requestMessage.BodyAsBytes);
 128            }
 1429             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            }
 1241             else if (requestMessage.Body != null)
 742            {
 743                 if (contentType != null)
 644                {
 645                     var encoding = requestMessage.BodyEncoding ?? Encoding.GetEncoding(contentType.Charset ?? "UTF-8");
 646                    httpRequestMessage.Content = new StringContent(requestMessage.Body, encoding, contentType.MimeType);
 647                }
 48                else
 149                {
 150                    httpRequestMessage.Content = new StringContent(requestMessage.Body, requestMessage.BodyEncoding);
 151                }
 752            }
 53
 54            // Overwrite the host header
 1555            httpRequestMessage.Headers.Host = new Uri(url).Authority;
 56
 57            // Set other headers if present and if not excluded
 1558             if (requestMessage.Headers == null || requestMessage.Headers.Count == 0)
 259            {
 260                return httpRequestMessage;
 61            }
 62
 1363            var excludeHeaders = new List<string> { HttpKnownHeaderNames.Host, HttpKnownHeaderNames.ContentLength };
 1364             if (contentType != null)
 765            {
 766                excludeHeaders.Add(HttpKnownHeaderNames.ContentType);
 767            }
 68
 10269            foreach (var header in requestMessage.Headers.Where(h => !excludeHeaders.Contains(h.Key, StringComparer.Ordi
 1570            {
 71                // Try to add to request headers. If failed - try to add to content headers
 1572                 if (httpRequestMessage.Headers.Contains(header.Key))
 073                {
 074                    continue;
 75                }
 76
 1577                 if (!httpRequestMessage.Headers.TryAddWithoutValidation(header.Key, header.Value))
 078                {
 079                    httpRequestMessage.Content.Headers.TryAddWithoutValidation(header.Key, header.Value);
 080                }
 1581            }
 82
 1383            return httpRequestMessage;
 1584        }
 85    }
 86}