diff --git a/Directory.Build.props b/Directory.Build.props index c63453a7..031d0e6a 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -4,7 +4,7 @@ - 1.2.0 + 1.2.1 diff --git a/src/WireMock.Net/Transformers/ResponseMessageTransformer.cs b/src/WireMock.Net/Transformers/ResponseMessageTransformer.cs index 39c1acfc..fe1facae 100644 --- a/src/WireMock.Net/Transformers/ResponseMessageTransformer.cs +++ b/src/WireMock.Net/Transformers/ResponseMessageTransformer.cs @@ -30,7 +30,7 @@ namespace WireMock.Transformers var template = new { request = requestMessage }; - switch (original.BodyData.DetectedBodyType) + switch (original.BodyData?.DetectedBodyType) { case BodyType.Json: TransformBodyAsJson(handlebarsContext.Handlebars, template, original, responseMessage); diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs index 501c44eb..40821f54 100644 --- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs +++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using System.Threading.Tasks; +using FluentAssertions; using Moq; using Newtonsoft.Json; using NFluent; @@ -24,6 +25,23 @@ namespace WireMock.Net.Tests.ResponseBuilders { private readonly WireMockServerSettings _settings = new WireMockServerSettings(); private const string ClientIp = "::1"; + + [Fact] + public async Task Response_ProvideResponse_Handlebars_WithNullBody_ShouldNotThrowException() + { + // Assign + var urlDetails = UrlUtils.Parse(new Uri("http://localhost/wiremock/a/b"), new PathString("/wiremock")); + var request = new RequestMessage(urlDetails, "GET", ClientIp); + + var response = Response.Create() + .WithTransformer(); + + // Act + var responseMessage = await response.ProvideResponseAsync(request, _settings); + + // Assert + responseMessage.BodyData.Should().BeNull(); + } [Fact] public async Task Response_ProvideResponse_Handlebars_UrlPathVerb() @@ -47,12 +65,14 @@ namespace WireMock.Net.Tests.ResponseBuilders Check.That(responseMessage.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt"); } - [Fact] - public async Task Response_ProvideResponse_Handlebars_UrlPath() + [Theory] + [InlineData("Get")] + [InlineData("Post")] + public async Task Response_ProvideResponse_Handlebars_UrlPath(string httpMethod) { // Assign var urlDetails = UrlUtils.Parse(new Uri("http://localhost/wiremock/a/b"), new PathString("/wiremock")); - var request = new RequestMessage(urlDetails, "POST", ClientIp); + var request = new RequestMessage(urlDetails, httpMethod, ClientIp); var response = Response.Create() .WithBody("{{request.url}} {{request.absoluteurl}} {{request.path}} {{request.absolutepath}}")