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)
if (ResponseMessage.Headers != null)
if (ResponseMessage.Headers?.Count > 0)
{
responseMessage.Headers = ResponseMessage.Headers;
}

View File

@@ -82,7 +82,37 @@ namespace WireMock.Net.Tests.ResponseBuilders
}
[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
var header = "X-UserId";