diff --git a/examples/WireMock.Net.Console.NETCoreApp3/WireMock.Net.Console.NETCoreApp3.csproj b/examples/WireMock.Net.Console.NETCoreApp3/WireMock.Net.Console.NETCoreApp3.csproj index 23b9b4181..ba94bb1d7 100644 --- a/examples/WireMock.Net.Console.NETCoreApp3/WireMock.Net.Console.NETCoreApp3.csproj +++ b/examples/WireMock.Net.Console.NETCoreApp3/WireMock.Net.Console.NETCoreApp3.csproj @@ -28,7 +28,7 @@ - + diff --git a/src/WireMock.Net/Transformers/HandleBarsFile.cs b/src/WireMock.Net/Transformers/HandleBarsFile.cs index 51a35ccfa..e5bbf8e24 100644 --- a/src/WireMock.Net/Transformers/HandleBarsFile.cs +++ b/src/WireMock.Net/Transformers/HandleBarsFile.cs @@ -5,7 +5,7 @@ namespace WireMock.Transformers { - internal static class HandleBarsFile + internal static class HandlebarsFile { public static void Register(IHandlebars handlebarsContext, IFileSystemHandler fileSystemHandler) { diff --git a/src/WireMock.Net/Transformers/HandleBarsHelpers.cs b/src/WireMock.Net/Transformers/HandleBarsHelpers.cs deleted file mode 100644 index 2bb64cc64..000000000 --- a/src/WireMock.Net/Transformers/HandleBarsHelpers.cs +++ /dev/null @@ -1,25 +0,0 @@ -using HandlebarsDotNet; -using WireMock.Handlers; - -namespace WireMock.Transformers -{ - internal static class HandlebarsHelpers - { - public static void Register(IHandlebars handlebarsContext, IFileSystemHandler fileSystemHandler) - { - HandleBarsRegex.Register(handlebarsContext); - - HandleBarsJsonPath.Register(handlebarsContext); - - HandleBarsLinq.Register(handlebarsContext); - - HandleBarsRandom.Register(handlebarsContext); - - HandleBarsXeger.Register(handlebarsContext); - - HandleBarsXPath.Register(handlebarsContext); - - HandleBarsFile.Register(handlebarsContext, fileSystemHandler); - } - } -} \ No newline at end of file diff --git a/src/WireMock.Net/Transformers/HandleBarsJsonPath.cs b/src/WireMock.Net/Transformers/HandleBarsJsonPath.cs index dc6e98719..b976b62e1 100644 --- a/src/WireMock.Net/Transformers/HandleBarsJsonPath.cs +++ b/src/WireMock.Net/Transformers/HandleBarsJsonPath.cs @@ -9,7 +9,7 @@ namespace WireMock.Transformers { - internal static class HandleBarsJsonPath + internal static class HandlebarsJsonPath { public static void Register(IHandlebars handlebarsContext) { diff --git a/src/WireMock.Net/Transformers/HandleBarsLinq.cs b/src/WireMock.Net/Transformers/HandleBarsLinq.cs index 2eb43a829..be5a473f8 100644 --- a/src/WireMock.Net/Transformers/HandleBarsLinq.cs +++ b/src/WireMock.Net/Transformers/HandleBarsLinq.cs @@ -9,7 +9,7 @@ namespace WireMock.Transformers { - internal static class HandleBarsLinq + internal static class HandlebarsLinq { public static void Register(IHandlebars handlebarsContext) { diff --git a/src/WireMock.Net/Transformers/HandleBarsRandom.cs b/src/WireMock.Net/Transformers/HandleBarsRandom.cs index 1f6a89f88..4bc11ba70 100644 --- a/src/WireMock.Net/Transformers/HandleBarsRandom.cs +++ b/src/WireMock.Net/Transformers/HandleBarsRandom.cs @@ -11,7 +11,7 @@ namespace WireMock.Transformers { - internal static class HandleBarsRandom + internal static class HandlebarsRandom { public static void Register(IHandlebars handlebarsContext) { diff --git a/src/WireMock.Net/Transformers/HandleBarsRegex.cs b/src/WireMock.Net/Transformers/HandleBarsRegex.cs index a22d55543..490ceed24 100644 --- a/src/WireMock.Net/Transformers/HandleBarsRegex.cs +++ b/src/WireMock.Net/Transformers/HandleBarsRegex.cs @@ -7,7 +7,7 @@ namespace WireMock.Transformers { - internal static class HandleBarsRegex + internal static class HandlebarsRegex { public static void Register(IHandlebars handlebarsContext) { diff --git a/src/WireMock.Net/Transformers/HandleBarsXPath.cs b/src/WireMock.Net/Transformers/HandleBarsXPath.cs index 6118e70a3..48ba898e9 100644 --- a/src/WireMock.Net/Transformers/HandleBarsXPath.cs +++ b/src/WireMock.Net/Transformers/HandleBarsXPath.cs @@ -10,7 +10,7 @@ namespace WireMock.Transformers { - internal static class HandleBarsXPath + internal static class HandlebarsXPath { public static void Register(IHandlebars handlebarsContext) { diff --git a/src/WireMock.Net/Transformers/HandleBarsXeger.cs b/src/WireMock.Net/Transformers/HandleBarsXeger.cs index 1928c6ca5..92786aab6 100644 --- a/src/WireMock.Net/Transformers/HandleBarsXeger.cs +++ b/src/WireMock.Net/Transformers/HandleBarsXeger.cs @@ -5,7 +5,7 @@ namespace WireMock.Transformers { - internal static class HandleBarsXeger + internal static class HandlebarsXeger { public static void Register(IHandlebars handlebarsContext) { diff --git a/src/WireMock.Net/Transformers/HandlebarsContextFactory.cs b/src/WireMock.Net/Transformers/HandlebarsContextFactory.cs index 40354e548..b34b8c470 100644 --- a/src/WireMock.Net/Transformers/HandlebarsContextFactory.cs +++ b/src/WireMock.Net/Transformers/HandlebarsContextFactory.cs @@ -24,7 +24,7 @@ public IHandlebarsContext Create() { var handlebars = Handlebars.Create(HandlebarsConfiguration); - HandlebarsHelpers.Register(handlebars, _fileSystemHandler); + WireMockHandlebarsHelpers.Register(handlebars, _fileSystemHandler); _action?.Invoke(handlebars, _fileSystemHandler); diff --git a/src/WireMock.Net/Transformers/WireMockHandlebarsHelpers.cs b/src/WireMock.Net/Transformers/WireMockHandlebarsHelpers.cs new file mode 100644 index 000000000..0ecce91d3 --- /dev/null +++ b/src/WireMock.Net/Transformers/WireMockHandlebarsHelpers.cs @@ -0,0 +1,30 @@ +using HandlebarsDotNet; +using HandlebarsDotNet.Helpers; +using WireMock.Handlers; + +namespace WireMock.Transformers +{ + internal static class WireMockHandlebarsHelpers + { + public static void Register(IHandlebars handlebarsContext, IFileSystemHandler fileSystemHandler) + { + // Register https://github.com/StefH/Handlebars.Net.Helpers + HandlebarsHelpers.Register(handlebarsContext); + + // Register WireMock.Net specific helpers + HandlebarsRegex.Register(handlebarsContext); + + HandlebarsJsonPath.Register(handlebarsContext); + + HandlebarsLinq.Register(handlebarsContext); + + HandlebarsRandom.Register(handlebarsContext); + + HandlebarsXeger.Register(handlebarsContext); + + HandlebarsXPath.Register(handlebarsContext); + + HandlebarsFile.Register(handlebarsContext, fileSystemHandler); + } + } +} \ No newline at end of file diff --git a/src/WireMock.Net/WireMock.Net.csproj b/src/WireMock.Net/WireMock.Net.csproj index fb8116041..e7b8be536 100644 --- a/src/WireMock.Net/WireMock.Net.csproj +++ b/src/WireMock.Net/WireMock.Net.csproj @@ -61,6 +61,7 @@ + @@ -70,14 +71,6 @@ - - - - - - - - diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsHelpersTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsHelpersTests.cs new file mode 100644 index 000000000..963a95d6f --- /dev/null +++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsHelpersTests.cs @@ -0,0 +1,36 @@ +using System.Threading.Tasks; +using NFluent; +using WireMock.Models; +using WireMock.ResponseBuilders; +using WireMock.Settings; +using WireMock.Types; +using WireMock.Util; +using Xunit; + +namespace WireMock.Net.Tests.ResponseBuilders +{ + public class ResponseWithHandlebarsHelpersTests + { + private readonly WireMockServerSettings _settings = new WireMockServerSettings(); + private const string ClientIp = "::1"; + + [Fact] + public async Task Response_ProvideResponseAsync_HandlebarsHelpers_String_Uppercase() + { + // Assign + var body = new BodyData { BodyAsString = "abc", DetectedBodyType = BodyType.String }; + + var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body); + + var response = Response.Create() + .WithBody("{{String.Uppercase request.body}}") + .WithTransformer(); + + // Act + var responseMessage = await response.ProvideResponseAsync(request, _settings); + + // assert + Check.That(responseMessage.BodyData.BodyAsString).Equals("ABC"); + } + } +} \ No newline at end of file