Skip to content

Commit

Permalink
Fixed for 'Response BodyAsJson with JArray does not work' (#722)
Browse files Browse the repository at this point in the history
  • Loading branch information
StefH authored Feb 9, 2022
1 parent bb90658 commit f919a03
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@
<Description>Commonly used models, enumerations and types.</Description>
<AssemblyTitle>WireMock.Net.Abstractions</AssemblyTitle>
<Authors>Stef Heyenrath</Authors>
<TargetFrameworks>net45;netstandard1.0;netstandard2.0;netstandard2.1</TargetFrameworks>

<TargetFrameworks>net45;net451;netstandard1.0;netstandard2.0;netstandard2.1</TargetFrameworks>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591;8603</NoWarn>

<AssemblyName>WireMock.Net.Abstractions</AssemblyName>
<PackageId>WireMock.Net.Abstractions</PackageId>
<PackageTags>wiremock;wiremock.org;interfaces;models;classes;enumerations;types</PackageTags>
Expand Down
5 changes: 5 additions & 0 deletions src/WireMock.Net/Transformers/Transformer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,11 @@ private static IBodyData TransformBodyAsJson(ITransformerContext handlebarsConte
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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using FluentAssertions;
using Moq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NFluent;
using WireMock.Handlers;
using WireMock.Models;
Expand Down Expand Up @@ -385,6 +386,47 @@ public async Task Response_ProvideResponse_Transformer_WithBodyAsJson_ResultAsOb
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")]
Expand Down

0 comments on commit f919a03

Please sign in to comment.