diff --git a/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj b/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj
index 625aba68..0066314e 100644
--- a/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj
+++ b/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj
@@ -4,11 +4,9 @@
Commonly used models, enumerations and types.
WireMock.Net.Abstractions
Stef Heyenrath
- net45;netstandard1.0;netstandard2.0;netstandard2.1
-
+ net45;net451;netstandard1.0;netstandard2.0;netstandard2.1
true
$(NoWarn);1591;8603
-
WireMock.Net.Abstractions
WireMock.Net.Abstractions
wiremock;wiremock.org;interfaces;models;classes;enumerations;types
diff --git a/src/WireMock.Net/Transformers/Transformer.cs b/src/WireMock.Net/Transformers/Transformer.cs
index afb90b99..04aa2600 100644
--- a/src/WireMock.Net/Transformers/Transformer.cs
+++ b/src/WireMock.Net/Transformers/Transformer.cs
@@ -124,6 +124,11 @@ namespace WireMock.Transformers
WalkNode(handlebarsContext, options, jToken, model);
break;
+ case JArray bodyAsJArray:
+ jToken = bodyAsJArray.DeepClone();
+ WalkNode(handlebarsContext, options, jToken, model);
+ break;
+
case Array bodyAsArray:
jToken = JArray.FromObject(bodyAsArray);
WalkNode(handlebarsContext, options, jToken, model);
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs
index e8f36677..7b08773d 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs
@@ -5,6 +5,7 @@ using System.Threading.Tasks;
using FluentAssertions;
using Moq;
using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
using NFluent;
using WireMock.Handlers;
using WireMock.Models;
@@ -385,6 +386,47 @@ namespace WireMock.Net.Tests.ResponseBuilders
Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("{\"x\":\"test /foo_object\"}");
}
+ [Theory]
+ [InlineData(TransformerType.Handlebars)]
+ [InlineData(TransformerType.Scriban)]
+ [InlineData(TransformerType.ScribanDotLiquid)]
+ public async Task Response_ProvideResponse_Transformer_ResultAsArray(TransformerType transformerType)
+ {
+ // Assign
+ var request = new RequestMessage(new UrlDetails("http://localhost/foo_object"), "GET", ClientIp);
+
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(new [] { new { x = "test" }})
+ .WithTransformer(transformerType);
+
+ // Act
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false);
+
+ // Assert
+ JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be("[{\"x\":\"test\"}]");
+ }
+
+ [Theory]
+ [InlineData(TransformerType.Handlebars)]
+ [InlineData(TransformerType.Scriban)]
+ [InlineData(TransformerType.ScribanDotLiquid)]
+ public async Task Response_ProvideResponse_Transformer_ResultAsJArray(TransformerType transformerType)
+ {
+ // Assign
+ var request = new RequestMessage(new UrlDetails("http://localhost/foo_object"), "GET", ClientIp);
+
+ var array = JArray.Parse("[{\"x\":\"test\"}]");
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(array)
+ .WithTransformer(transformerType);
+
+ // Act
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false);
+
+ // Assert
+ JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be("[{\"x\":\"test\"}]");
+ }
+
//[Theory]
//[InlineData(TransformerType.Handlebars, "a")]
//[InlineData(TransformerType.Handlebars, "42")]