From 6d60b3773a759f2557ca9c8466dd8bfc39cadd70 Mon Sep 17 00:00:00 2001 From: vladimir-fed Date: Tue, 23 Jan 2018 09:05:12 +0200 Subject: [PATCH] Fix missed content headers (#79) --- src/WireMock.Net/Http/HttpClientHelper.cs | 2 +- .../FluentMockServerTests.Proxy.cs | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/WireMock.Net/Http/HttpClientHelper.cs b/src/WireMock.Net/Http/HttpClientHelper.cs index 224410cb..b08a7e08 100644 --- a/src/WireMock.Net/Http/HttpClientHelper.cs +++ b/src/WireMock.Net/Http/HttpClientHelper.cs @@ -62,7 +62,7 @@ namespace WireMock.Http var httpRequestMessage = new HttpRequestMessage(new HttpMethod(requestMessage.Method), url); // Set Body if present - if (requestMessage.BodyAsBytes != null && requestMessage.BodyAsBytes.Length > 0) + if (requestMessage.BodyAsBytes != null) { httpRequestMessage.Content = new ByteArrayContent(requestMessage.BodyAsBytes); } diff --git a/test/WireMock.Net.Tests/FluentMockServerTests.Proxy.cs b/test/WireMock.Net.Tests/FluentMockServerTests.Proxy.cs index ab63b69d..32dacb9c 100644 --- a/test/WireMock.Net.Tests/FluentMockServerTests.Proxy.cs +++ b/test/WireMock.Net.Tests/FluentMockServerTests.Proxy.cs @@ -63,6 +63,37 @@ namespace WireMock.Net.Tests Check.That(receivedRequest.Headers["Content-Type"]).ContainsExactly("text/plain"); } + [Fact] + public async Task FluentMockServer_Should_preserve_content_header_in_proxied_request_with_empty_content() + { + // given + _serverForProxyForwarding = FluentMockServer.Start(); + _serverForProxyForwarding + .Given(Request.Create().WithPath("/*")) + .RespondWith(Response.Create()); + + _server = FluentMockServer.Start(); + _server + .Given(Request.Create().WithPath("/*")) + .RespondWith(Response.Create().WithProxy(_serverForProxyForwarding.Urls[0])); + + // when + var requestMessage = new HttpRequestMessage + { + Method = HttpMethod.Post, + RequestUri = new Uri(_server.Urls[0]), + Content = new StringContent("") + }; + requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain"); + await new HttpClient().SendAsync(requestMessage); + + // then + var receivedRequest = _serverForProxyForwarding.LogEntries.First().RequestMessage; + Check.That(receivedRequest.Body).IsEqualTo(""); + Check.That(receivedRequest.Headers).ContainsKey("Content-Type"); + Check.That(receivedRequest.Headers["Content-Type"]).ContainsExactly("text/plain"); + } + [Fact] public async Task FluentMockServer_Should_preserve_content_header_in_proxied_response() {