diff --git a/src/WireMock.Net/ResponseBuilders/Response.cs b/src/WireMock.Net/ResponseBuilders/Response.cs index 638d05bd..33f90bc4 100644 --- a/src/WireMock.Net/ResponseBuilders/Response.cs +++ b/src/WireMock.Net/ResponseBuilders/Response.cs @@ -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; } diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs index d4bc5793..00ad8931 100644 --- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs +++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs @@ -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> + { + { header, new WireMockList("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";