From 6e45255c9e122c60078584b16e885a938f557d52 Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Sat, 4 May 2019 10:20:36 +0200 Subject: [PATCH] Dynamic response handlebars templating (2) (#273) * Dynamic response files using Handlebars templating (#270) * * Response templating / transformation using Handlebars and extensions * Add unit test for JsonPath and BodyAsFile mapping (#272) * fix merge issue --- .../ResponseWithHandlebarsTests.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs index 31011f5b1..fad6d28da 100644 --- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs +++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs @@ -231,5 +231,32 @@ public async Task Response_ProvideResponse_Handlebars_WithBodyAsFile() // Assert Check.That(responseMessage.BodyData.BodyAsFile).Equals(@"c:\1\test.xml"); } + + [Fact] + public async Task Response_ProvideResponse_Handlebars_WithBodyAsFile_JsonPath() + { + // Assign + string jsonString = "{ \"MyUniqueNumber\": \"1\" }"; + var bodyData = new BodyData + { + BodyAsString = jsonString, + BodyAsJson = JsonConvert.DeserializeObject(jsonString), + DetectedBodyType = BodyType.Json, + DetectedBodyTypeFromContentType = BodyType.Json, + Encoding = Encoding.UTF8 + }; + var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, bodyData); + + string jsonPath = "\"$.MyUniqueNumber\""; + var response = Response.Create() + .WithTransformer() + .WithBodyFromFile(@"c:\\{{JsonPath.SelectToken request.body " + jsonPath + "}}\\test.json"); // why use a \\ here ? + + // Act + var responseMessage = await response.ProvideResponseAsync(request); + + // Assert + Check.That(responseMessage.BodyData.BodyAsFile).Equals(@"c:\1\test.json"); + } } } \ No newline at end of file