Fix callback with Headers (#603)

This commit is contained in:
Stef Heyenrath
2021-04-15 17:41:45 +00:00
committed by GitHub
parent dc078b57ea
commit 969b0da8e2
2 changed files with 32 additions and 2 deletions

View File

@@ -392,7 +392,7 @@ namespace WireMock.ResponseBuilders
} }
// Copy Headers from ResponseMessage (if defined) // Copy Headers from ResponseMessage (if defined)
if (ResponseMessage.Headers != null) if (ResponseMessage.Headers?.Count > 0)
{ {
responseMessage.Headers = ResponseMessage.Headers; responseMessage.Headers = ResponseMessage.Headers;
} }

View File

@@ -82,7 +82,37 @@ namespace WireMock.Net.Tests.ResponseBuilders
} }
[Fact] [Fact]
public async Task Response_WithCallback_And_WithStatusCode_And_WithHeader() public async Task Response_WithCallback_ShouldUseStatusCodeAndHeaderInTheCallback()
{
// Assign
var header = "X-UserId";
var requestMessage = new RequestMessage(new UrlDetails("http://localhost/foo"), "GET", "::1");
var responseBuilder = Response.Create()
.WithCallback(request => new ResponseMessage
{
BodyData = new BodyData
{
DetectedBodyType = BodyType.String,
BodyAsString = request.Path + "Bar"
},
StatusCode = HttpStatusCode.Accepted,
Headers = new Dictionary<string, WireMockList<string>>
{
{ header, new WireMockList<string>("Stef") }
}
});
// Act
var response = await responseBuilder.ProvideResponseAsync(requestMessage, _settings);
// Assert
response.Message.BodyData.BodyAsString.Should().Be("/fooBar");
response.Message.StatusCode.Should().Be(HttpStatusCode.Accepted);
response.Message.Headers[header].Should().ContainSingle("Stef");
}
[Fact]
public async Task Response_WithCallback_And_Additional_WithStatusCode_And_WithHeader_ShouldUseAdditional()
{ {
// Assign // Assign
var header = "X-UserId"; var header = "X-UserId";