Skip to content

Commit 9e954c1

Browse files
committed
Fix HandlebarsContext ParseAndEvaluate method
1 parent 6f73dfe commit 9e954c1

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/WireMock.Net/Transformers/Handlebars/HandlebarsContext.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ public string ParseAndRender(string text, object model)
2727

2828
public object? ParseAndEvaluate(string text, object model)
2929
{
30-
if (Handlebars.TryEvaluate(text, model, out var result) && result is not UndefinedBindingResult)
30+
if (text.StartsWith("{{") && text.EndsWith("}}") &&
31+
Handlebars.TryEvaluate(text, model, out var result) &&
32+
result is not UndefinedBindingResult)
3133
{
3234
return result;
3335
}

test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs

+19
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,25 @@ public async Task Response_ProvideResponse_Handlebars_PathSegments()
130130
Check.That(response.Message.BodyData!.BodyAsString).Equals("a wiremock");
131131
}
132132

133+
[Fact]
134+
public async Task Response_ProvideResponse_Handlebars_BodyAsJson_PathSegments()
135+
{
136+
// Assign
137+
var urlDetails = UrlUtils.Parse(new Uri("http://localhost/wiremock/a/b"), new PathString("/wiremock"));
138+
var request = new RequestMessage(urlDetails, "POST", ClientIp);
139+
140+
var responseBuilder = Response.Create()
141+
.WithBodyAsJson(new { field = "prefix_{{request.PathSegments.[0]}}_postfix" })
142+
.WithTransformer();
143+
144+
// Act
145+
var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
146+
147+
// Assert
148+
var json = (JObject)response.Message.BodyData!.BodyAsJson!;
149+
Check.That(json["field"]!.Value<string>()).Equals("prefix_a_postfix");
150+
}
151+
133152
[Theory(Skip = "Invalid token `OpenBracket`")]
134153
[InlineData(TransformerType.Scriban)]
135154
[InlineData(TransformerType.ScribanDotLiquid)]

0 commit comments

Comments
 (0)