diff --git a/src/Ocelot/Responder/HttpContextResponder.cs b/src/Ocelot/Responder/HttpContextResponder.cs
index 76e8956a..fbfbc6c2 100644
--- a/src/Ocelot/Responder/HttpContextResponder.cs
+++ b/src/Ocelot/Responder/HttpContextResponder.cs
@@ -55,7 +55,7 @@ namespace Ocelot.Responder
using (Stream stream = new MemoryStream(content))
{
- if (response.StatusCode != HttpStatusCode.NotModified)
+ if (response.StatusCode != HttpStatusCode.NotModified && context.Response.ContentLength != 0)
{
await stream.CopyToAsync(context.Response.Body);
}
@@ -79,4 +79,4 @@ namespace Ocelot.Responder
}
}
}
-}
\ No newline at end of file
+}
diff --git a/test/Ocelot.UnitTests/Ocelot.UnitTests.csproj b/test/Ocelot.UnitTests/Ocelot.UnitTests.csproj
index 9c0f0a4f..7993644f 100644
--- a/test/Ocelot.UnitTests/Ocelot.UnitTests.csproj
+++ b/test/Ocelot.UnitTests/Ocelot.UnitTests.csproj
@@ -19,10 +19,6 @@
True
-
-
-
-
diff --git a/test/Ocelot.UnitTests/Responder/HttpContextResponderTests.cs b/test/Ocelot.UnitTests/Responder/HttpContextResponderTests.cs
new file mode 100644
index 00000000..ae465774
--- /dev/null
+++ b/test/Ocelot.UnitTests/Responder/HttpContextResponderTests.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Text;
+using Microsoft.AspNetCore.Http;
+using Ocelot.Headers;
+using Ocelot.Responder;
+using Shouldly;
+using Xunit;
+
+namespace Ocelot.UnitTests.Responder
+{
+ public class HttpContextResponderTests
+ {
+ private readonly HttpContextResponder _responder;
+ private RemoveOutputHeaders _removeOutputHeaders;
+
+ public HttpContextResponderTests()
+ {
+ _removeOutputHeaders = new RemoveOutputHeaders();
+ _responder = new HttpContextResponder(_removeOutputHeaders);
+ }
+
+ [Fact]
+ public void should_remove_transfer_encoding_header()
+ {
+ var httpContext = new DefaultHttpContext();
+ var httpResponseMessage = new HttpResponseMessage {Content = new StringContent("")};
+ httpResponseMessage.Headers.Add("Transfer-Encoding", "woop");
+ _responder.SetResponseOnHttpContext(httpContext, httpResponseMessage).GetAwaiter().GetResult();
+ var header = httpContext.Response.Headers["Transfer-Encoding"];
+ header.ShouldBeEmpty();
+ }
+
+ [Fact]
+ public void should_have_content_length()
+ {
+ var httpContext = new DefaultHttpContext();
+ var httpResponseMessage = new HttpResponseMessage { Content = new StringContent("test") };
+ _responder.SetResponseOnHttpContext(httpContext, httpResponseMessage).GetAwaiter().GetResult();
+ var header = httpContext.Response.Headers["Content-Length"];
+ header.First().ShouldBe("4");
+ }
+
+ [Fact]
+ public void should_add_header()
+ {
+ var httpContext = new DefaultHttpContext();
+ var httpResponseMessage = new HttpResponseMessage { Content = new StringContent("test") };
+ httpResponseMessage.Headers.Add("test", "test");
+ _responder.SetResponseOnHttpContext(httpContext, httpResponseMessage).GetAwaiter().GetResult();
+ var header = httpContext.Response.Headers["test"];
+ header.First().ShouldBe("test");
+ }
+
+ [Fact]
+ public void should_call_without_exception()
+ {
+ var httpContext = new DefaultHttpContext();
+ _responder.SetErrorResponseOnContext(httpContext, 500);
+ }
+ }
+}