diff --git a/WireMock.Net Solution.sln b/WireMock.Net Solution.sln
index ea1480ff..168771e8 100644
--- a/WireMock.Net Solution.sln
+++ b/WireMock.Net Solution.sln
@@ -6,6 +6,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{8F890C6F-9ACC-438D-928A-AD61CDA862F2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{0BB8B634-407A-4610-A91F-11586990767A}"
+ ProjectSection(SolutionItems) = preProject
+ test\Directory.Build.props = test\Directory.Build.props
+ EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WireMock.Net", "src\WireMock.Net\WireMock.Net.csproj", "{D3804228-91F4-4502-9595-39584E5A01AD}"
EndProject
diff --git a/src/WireMock.Net/Transformers/Handlebars/HandlebarsContext.cs b/src/WireMock.Net/Transformers/Handlebars/HandlebarsContext.cs
index cfc998f9..5907e188 100644
--- a/src/WireMock.Net/Transformers/Handlebars/HandlebarsContext.cs
+++ b/src/WireMock.Net/Transformers/Handlebars/HandlebarsContext.cs
@@ -27,7 +27,9 @@ internal class HandlebarsContext : IHandlebarsContext
public object? ParseAndEvaluate(string text, object model)
{
- if (Handlebars.TryEvaluate(text, model, out var result) && result is not UndefinedBindingResult)
+ if (text.StartsWith("{{") && text.EndsWith("}}") &&
+ Handlebars.TryEvaluate(text, model, out var result) &&
+ result is not UndefinedBindingResult)
{
return result;
}
diff --git a/test/Directory.Build.props b/test/Directory.Build.props
new file mode 100644
index 00000000..c6070279
--- /dev/null
+++ b/test/Directory.Build.props
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs
index 278d4615..d6727acd 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs
@@ -130,6 +130,29 @@ public class ResponseWithTransformerTests
Check.That(response.Message.BodyData!.BodyAsString).Equals("a wiremock");
}
+ [Theory]
+ [InlineData("{{request.PathSegments.[0]}}", "a")]
+ [InlineData("prefix_{{request.PathSegments.[0]}}", "prefix_a")]
+ [InlineData("{{request.PathSegments.[0]}}_postfix", "a_postfix")]
+ [InlineData("prefix_{{request.PathSegments.[0]}}_postfix", "prefix_a_postfix")]
+ public async Task Response_ProvideResponse_Handlebars_BodyAsJson_PathSegments(string field, string expected)
+ {
+ // Assign
+ var urlDetails = UrlUtils.Parse(new Uri("http://localhost/wiremock/a/b"), new PathString("/wiremock"));
+ var request = new RequestMessage(urlDetails, "POST", ClientIp);
+
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(new { field })
+ .WithTransformer();
+
+ // Act
+ var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
+
+ // Assert
+ var json = (JObject)response.Message.BodyData!.BodyAsJson!;
+ Check.That(json["field"]!.Value()).Equals(expected);
+ }
+
[Theory(Skip = "Invalid token `OpenBracket`")]
[InlineData(TransformerType.Scriban)]
[InlineData(TransformerType.ScribanDotLiquid)]