Add support to use 'mapping' object in in reponse templating (#798)

* mapping

* .

* .
This commit is contained in:
Stef Heyenrath
2022-09-03 08:52:05 +02:00
committed by GitHub
parent 862c04e722
commit 74480c8ba9
37 changed files with 2114 additions and 2055 deletions
+1
View File
@@ -30,5 +30,6 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Webhooks/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=Webhooks/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=wiremock/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=wiremock/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=wiremockserver/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=wiremockserver/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Xeger/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=xunit/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=xunit/@EntryIndexedValue">True</s:Boolean>
</wpf:ResourceDictionary> </wpf:ResourceDictionary>
@@ -1,12 +1,12 @@
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using log4net.Config; using log4net.Config;
using log4net.Repository; using log4net.Repository;
using WireMock.Net.ConsoleApplication; using WireMock.Net.ConsoleApplication;
namespace WireMock.Net.Console.NETCoreApp namespace WireMock.Net.Console.NETCoreApp;
{
static class Program static class Program
{ {
private static readonly ILoggerRepository LogRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); private static readonly ILoggerRepository LogRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
@@ -19,4 +19,3 @@ namespace WireMock.Net.Console.NETCoreApp
MainApp.Run(); MainApp.Run();
} }
} }
}
@@ -1,8 +1,8 @@
using System.IO; using System.IO;
using log4net.Config; using log4net.Config;
namespace WireMock.Net.ConsoleApplication namespace WireMock.Net.ConsoleApplication;
{
static class Program static class Program
{ {
static void Main(params string[] args) static void Main(params string[] args)
@@ -12,4 +12,3 @@ namespace WireMock.Net.ConsoleApplication
MainApp.Run(); MainApp.Run();
} }
} }
}
@@ -80,7 +80,6 @@
<None Include="App.config"> <None Include="App.config">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>
<None Include="libman.json" />
<None Include="log4net.config"> <None Include="log4net.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
@@ -1,12 +1,12 @@
using System; using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using log4net.Config; using log4net.Config;
using WireMock.Server; using WireMock.Server;
using WireMock.Settings; using WireMock.Settings;
namespace WireMock.Net.StandAlone.Net452 namespace WireMock.Net.StandAlone.Net452;
{
public class Program public class Program
{ {
static void Main(params string[] args) static void Main(params string[] args)
@@ -15,7 +15,7 @@ namespace WireMock.Net.StandAlone.Net452
if (WireMockServerSettingsParser.TryParseArguments(args, out var settings)) if (WireMockServerSettingsParser.TryParseArguments(args, out var settings))
{ {
settings.Logger.Debug("WireMock.Net server arguments [{0}]", string.Join(", ", args.Select(a => $"'{a}'"))); Console.WriteLine("WireMock.Net server arguments [{0}]", string.Join(", ", args.Select(a => $"'{a}'")));
WireMockServer.Start(settings); WireMockServer.Start(settings);
@@ -24,4 +24,3 @@ namespace WireMock.Net.StandAlone.Net452
} }
} }
} }
}
@@ -1,17 +1,17 @@
using System; using System;
using System.Linq; using System.Linq;
using WireMock.Server; using WireMock.Server;
using WireMock.Settings; using WireMock.Settings;
namespace WireMock.Net.StandAlone.Net461 namespace WireMock.Net.StandAlone.Net461;
{
static class Program static class Program
{ {
static void Main(string[] args) static void Main(string[] args)
{ {
if (WireMockServerSettingsParser.TryParseArguments(args, out var settings)) if (WireMockServerSettingsParser.TryParseArguments(args, out var settings))
{ {
settings.Logger.Debug("WireMock.Net server arguments [{0}]", string.Join(", ", args.Select(a => $"'{a}'"))); Console.WriteLine("WireMock.Net server arguments [{0}]", string.Join(", ", args.Select(a => $"'{a}'")));
WireMockServer.Start(settings); WireMockServer.Start(settings);
@@ -20,4 +20,3 @@ namespace WireMock.Net.StandAlone.Net461
} }
} }
} }
}
+3 -2
View File
@@ -25,9 +25,10 @@ internal class WebhookSender
_settings = Guard.NotNull(settings); _settings = Guard.NotNull(settings);
} }
public Task<HttpResponseMessage> SendAsync(HttpClient client, IWebhookRequest request, IRequestMessage originalRequestMessage, IResponseMessage originalResponseMessage) public Task<HttpResponseMessage> SendAsync(HttpClient client, IMapping mapping, IWebhookRequest request, IRequestMessage originalRequestMessage, IResponseMessage originalResponseMessage)
{ {
Guard.NotNull(client); Guard.NotNull(client);
Guard.NotNull(mapping);
Guard.NotNull(request); Guard.NotNull(request);
Guard.NotNull(originalRequestMessage); Guard.NotNull(originalRequestMessage);
Guard.NotNull(originalResponseMessage); Guard.NotNull(originalResponseMessage);
@@ -54,7 +55,7 @@ internal class WebhookSender
throw new NotImplementedException($"TransformerType '{request.TransformerType}' is not supported."); throw new NotImplementedException($"TransformerType '{request.TransformerType}' is not supported.");
} }
(bodyData, headers) = responseMessageTransformer.Transform(originalRequestMessage, originalResponseMessage, request.BodyData, request.Headers, request.TransformerReplaceNodeOptions); (bodyData, headers) = responseMessageTransformer.Transform(mapping, originalRequestMessage, originalResponseMessage, request.BodyData, request.Headers, request.TransformerReplaceNodeOptions);
} }
else else
{ {
+1 -1
View File
@@ -118,7 +118,7 @@ public class Mapping : IMapping
/// <inheritdoc cref="IMapping.ProvideResponseAsync" /> /// <inheritdoc cref="IMapping.ProvideResponseAsync" />
public Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IRequestMessage requestMessage) public Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IRequestMessage requestMessage)
{ {
return Provider.ProvideResponseAsync(requestMessage, Settings); return Provider.ProvideResponseAsync(this, requestMessage, Settings);
} }
/// <inheritdoc cref="IMapping.GetRequestMatchResult" /> /// <inheritdoc cref="IMapping.GetRequestMatchResult" />
@@ -4,12 +4,12 @@ using WireMock.Handlers;
using WireMock.Logging; using WireMock.Logging;
using WireMock.Matchers; using WireMock.Matchers;
using WireMock.Util; using WireMock.Util;
using WireMock.Types;
#if !USE_ASPNETCORE #if !USE_ASPNETCORE
using Owin; using Owin;
#else #else
using IAppBuilder = Microsoft.AspNetCore.Builder.IApplicationBuilder; using IAppBuilder = Microsoft.AspNetCore.Builder.IApplicationBuilder;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using WireMock.Types;
#endif #endif
namespace WireMock.Owin; namespace WireMock.Owin;
+4 -4
View File
@@ -26,7 +26,7 @@ namespace WireMock.Owin
{ {
internal class WireMockMiddleware : OwinMiddleware internal class WireMockMiddleware : OwinMiddleware
{ {
private readonly object _lock = new object(); private readonly object _lock = new();
private static readonly Task CompletedTask = Task.FromResult(false); private static readonly Task CompletedTask = Task.FromResult(false);
private readonly IWireMockMiddlewareOptions _options; private readonly IWireMockMiddlewareOptions _options;
private readonly IOwinRequestMapper _requestMapper; private readonly IOwinRequestMapper _requestMapper;
@@ -108,10 +108,10 @@ namespace WireMock.Owin
logRequest = targetMapping.LogMapping; logRequest = targetMapping.LogMapping;
if (targetMapping.IsAdminInterface && _options.AuthenticationMatcher != null) if (targetMapping.IsAdminInterface && _options.AuthenticationMatcher != null && request.Headers != null)
{ {
bool present = request.Headers.TryGetValue(HttpKnownHeaderNames.Authorization, out WireMockList<string> authorization); bool present = request.Headers.TryGetValue(HttpKnownHeaderNames.Authorization, out WireMockList<string> authorization);
if (!present || _options.AuthenticationMatcher.IsMatch(authorization.ToString()) < MatchScores.Perfect) if (!present || _options.AuthenticationMatcher.IsMatch(authorization!.ToString()) < MatchScores.Perfect)
{ {
_options.Logger.Error("HttpStatusCode set to 401"); _options.Logger.Error("HttpStatusCode set to 401");
response = ResponseMessageBuilder.Create(null, HttpStatusCode.Unauthorized); response = ResponseMessageBuilder.Create(null, HttpStatusCode.Unauthorized);
@@ -208,7 +208,7 @@ namespace WireMock.Owin
try try
{ {
await webhookSender.SendAsync(httpClientForWebhook, mapping.Webhooks[index].Request, request, response).ConfigureAwait(false); await webhookSender.SendAsync(httpClientForWebhook, mapping, mapping.Webhooks[index].Request, request, response).ConfigureAwait(false);
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -244,7 +244,7 @@ public partial class Response : IResponseBuilder
} }
/// <inheritdoc /> /// <inheritdoc />
public async Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IRequestMessage requestMessage, WireMockServerSettings settings) public async Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IMapping mapping, IRequestMessage requestMessage, WireMockServerSettings settings)
{ {
Guard.NotNull(requestMessage); Guard.NotNull(requestMessage);
Guard.NotNull(settings); Guard.NotNull(settings);
@@ -327,7 +327,7 @@ public partial class Response : IResponseBuilder
throw new NotImplementedException($"TransformerType '{TransformerType}' is not supported."); throw new NotImplementedException($"TransformerType '{TransformerType}' is not supported.");
} }
return (responseMessageTransformer.Transform(requestMessage, responseMessage, UseTransformerForBodyAsFile, TransformerReplaceNodeOptions), null); return (responseMessageTransformer.Transform(mapping, requestMessage, responseMessage, UseTransformerForBodyAsFile, TransformerReplaceNodeOptions), null);
} }
if (!UseTransformer && ResponseMessage.BodyData?.BodyAsFileIsCached == true) if (!UseTransformer && ResponseMessage.BodyData?.BodyAsFileIsCached == true)
@@ -13,7 +13,7 @@ internal class DynamicAsyncResponseProvider : IResponseProvider
_responseMessageFunc = responseMessageFunc; _responseMessageFunc = responseMessageFunc;
} }
public async Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IRequestMessage requestMessage, WireMockServerSettings settings) public async Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IMapping mapping, IRequestMessage requestMessage, WireMockServerSettings settings)
{ {
return (await _responseMessageFunc(requestMessage).ConfigureAwait(false), null); return (await _responseMessageFunc(requestMessage).ConfigureAwait(false), null);
} }
@@ -13,7 +13,7 @@ internal class DynamicResponseProvider : IResponseProvider
_responseMessageFunc = responseMessageFunc; _responseMessageFunc = responseMessageFunc;
} }
public Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IRequestMessage requestMessage, WireMockServerSettings settings) public Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IMapping mapping, IRequestMessage requestMessage, WireMockServerSettings settings)
{ {
(IResponseMessage responseMessage, IMapping? mapping) result = (_responseMessageFunc(requestMessage), null); (IResponseMessage responseMessage, IMapping? mapping) result = (_responseMessageFunc(requestMessage), null);
return Task.FromResult(result); return Task.FromResult(result);
@@ -13,8 +13,9 @@ public interface IResponseProvider
/// <summary> /// <summary>
/// The provide response. /// The provide response.
/// </summary> /// </summary>
/// <param name="mapping">The used mapping.</param>
/// <param name="requestMessage">The request.</param> /// <param name="requestMessage">The request.</param>
/// <param name="settings">The WireMockServerSettings.</param> /// <param name="settings">The WireMockServerSettings.</param>
/// <returns>The <see cref="ResponseMessage"/> including a new (optional) <see cref="IMapping"/>.</returns> /// <returns>The <see cref="ResponseMessage"/> including a new (optional) <see cref="IMapping"/>.</returns>
Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IRequestMessage requestMessage, WireMockServerSettings settings); Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IMapping mapping, IRequestMessage requestMessage, WireMockServerSettings settings);
} }
@@ -15,7 +15,7 @@ internal class ProxyAsyncResponseProvider : IResponseProvider
_settings = settings; _settings = settings;
} }
public async Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IRequestMessage requestMessage, WireMockServerSettings settings) public async Task<(IResponseMessage Message, IMapping? Mapping)> ProvideResponseAsync(IMapping mapping, IRequestMessage requestMessage, WireMockServerSettings settings)
{ {
return (await _responseMessageFunc(requestMessage, _settings).ConfigureAwait(false), null); return (await _responseMessageFunc(requestMessage, _settings).ConfigureAwait(false), null);
} }
+4 -5
View File
@@ -1,5 +1,5 @@
namespace WireMock namespace WireMock;
{
/// <summary> /// <summary>
/// The ScenarioState /// The ScenarioState
/// </summary> /// </summary>
@@ -8,12 +8,12 @@
/// <summary> /// <summary>
/// Gets or sets the Name (from the Scenario). /// Gets or sets the Name (from the Scenario).
/// </summary> /// </summary>
public string Name { get; set; } public string? Name { get; set; }
/// <summary> /// <summary>
/// Gets or sets the NextState. /// Gets or sets the NextState.
/// </summary> /// </summary>
public string NextState { get; set; } public string? NextState { get; set; }
/// <summary> /// <summary>
/// Gets or sets a value indicating whether this <see cref="ScenarioState"/> is started. /// Gets or sets a value indicating whether this <see cref="ScenarioState"/> is started.
@@ -30,4 +30,3 @@
/// </summary> /// </summary>
public int Counter { get; set; } public int Counter { get; set; }
} }
}
@@ -21,7 +21,7 @@ public static class WireMockServerSettingsParser
[PublicAPI] [PublicAPI]
public static bool TryParseArguments(string[] args, [NotNullWhen(true)] out WireMockServerSettings? settings, IWireMockLogger? logger = null) public static bool TryParseArguments(string[] args, [NotNullWhen(true)] out WireMockServerSettings? settings, IWireMockLogger? logger = null)
{ {
Guard.HasNoNulls(args, nameof(args)); Guard.HasNoNulls(args);
var parser = new SimpleCommandLineParser(); var parser = new SimpleCommandLineParser();
parser.Parse(args); parser.Parse(args);
@@ -68,8 +68,7 @@ public static class WireMockServerSettingsParser
{ {
settings.Logger = logger; settings.Logger = logger;
} }
else if (parser.GetStringValue("WireMockLogger") == "WireMockConsoleLogger")
if (parser.GetStringValue("WireMockLogger") == "WireMockConsoleLogger")
{ {
settings.Logger = new WireMockConsoleLogger(); settings.Logger = new WireMockConsoleLogger();
} }
@@ -6,7 +6,7 @@ namespace WireMock.Transformers;
interface ITransformer interface ITransformer
{ {
ResponseMessage Transform(IRequestMessage requestMessage, IResponseMessage original, bool useTransformerForBodyAsFile, ReplaceNodeOptions options); ResponseMessage Transform(IMapping mapping, IRequestMessage requestMessage, IResponseMessage original, bool useTransformerForBodyAsFile, ReplaceNodeOptions options);
(IBodyData? BodyData, IDictionary<string, WireMockList<string>>? Headers) Transform(IRequestMessage originalRequestMessage, IResponseMessage originalResponseMessage, IBodyData? bodyData, IDictionary<string, WireMockList<string>>? headers, ReplaceNodeOptions options); (IBodyData? BodyData, IDictionary<string, WireMockList<string>>? Headers) Transform(IMapping mapping, IRequestMessage originalRequestMessage, IResponseMessage originalResponseMessage, IBodyData? bodyData, IDictionary<string, WireMockList<string>>? headers, ReplaceNodeOptions options);
} }
+19 -17
View File
@@ -19,6 +19,7 @@ internal class Transformer : ITransformer
} }
public (IBodyData? BodyData, IDictionary<string, WireMockList<string>>? Headers) Transform( public (IBodyData? BodyData, IDictionary<string, WireMockList<string>>? Headers) Transform(
IMapping mapping,
IRequestMessage originalRequestMessage, IRequestMessage originalRequestMessage,
IResponseMessage originalResponseMessage, IResponseMessage originalResponseMessage,
IBodyData? bodyData, IBodyData? bodyData,
@@ -29,6 +30,7 @@ internal class Transformer : ITransformer
var model = new var model = new
{ {
mapping,
request = originalRequestMessage, request = originalRequestMessage,
response = originalResponseMessage response = originalResponseMessage
}; };
@@ -42,7 +44,7 @@ internal class Transformer : ITransformer
return (newBodyData, TransformHeaders(transformerContext, model, headers)); return (newBodyData, TransformHeaders(transformerContext, model, headers));
} }
public ResponseMessage Transform(IRequestMessage requestMessage, IResponseMessage original, bool useTransformerForBodyAsFile, ReplaceNodeOptions options) public ResponseMessage Transform(IMapping mapping, IRequestMessage requestMessage, IResponseMessage original, bool useTransformerForBodyAsFile, ReplaceNodeOptions options)
{ {
var transformerContext = _factory.Create(); var transformerContext = _factory.Create();
@@ -50,6 +52,7 @@ internal class Transformer : ITransformer
var model = new var model = new
{ {
mapping,
request = requestMessage request = requestMessage
}; };
@@ -82,22 +85,15 @@ internal class Transformer : ITransformer
return responseMessage; return responseMessage;
} }
private static IBodyData TransformBodyData(ITransformerContext transformerContext, ReplaceNodeOptions options, object model, IBodyData original, bool useTransformerForBodyAsFile) private static IBodyData? TransformBodyData(ITransformerContext transformerContext, ReplaceNodeOptions options, object model, IBodyData original, bool useTransformerForBodyAsFile)
{ {
switch (original?.DetectedBodyType) return original.DetectedBodyType switch
{ {
case BodyType.Json: BodyType.Json => TransformBodyAsJson(transformerContext, options, model, original),
return TransformBodyAsJson(transformerContext, options, model, original); BodyType.File => TransformBodyAsFile(transformerContext, model, original, useTransformerForBodyAsFile),
BodyType.String => TransformBodyAsString(transformerContext, model, original),
case BodyType.File: _ => null
return TransformBodyAsFile(transformerContext, model, original, useTransformerForBodyAsFile); };
case BodyType.String:
return TransformBodyAsString(transformerContext, model, original);
default:
return null;
}
} }
private static IDictionary<string, WireMockList<string>> TransformHeaders(ITransformerContext transformerContext, object model, IDictionary<string, WireMockList<string>>? original) private static IDictionary<string, WireMockList<string>> TransformHeaders(ITransformerContext transformerContext, object model, IDictionary<string, WireMockList<string>>? original)
@@ -166,11 +162,17 @@ internal class Transformer : ITransformer
{ {
const string property = "_"; const string property = "_";
JObject dummy = JObject.Parse($"{{ \"{property}\": null }}"); JObject dummy = JObject.Parse($"{{ \"{property}\": null }}");
JToken node = dummy[property]; if (dummy[property] == null)
{
// TODO: check if just returning null is fine
return string.Empty;
}
JToken node = dummy[property]!;
ReplaceNodeValue(options, node, transformedString); ReplaceNodeValue(options, node, transformedString);
return dummy[property]; return dummy[property]!;
} }
return stringValue; return stringValue;
@@ -1,15 +1,16 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Moq;
using NFluent; using NFluent;
using WireMock.Models; using WireMock.Models;
using WireMock.ResponseBuilders; using WireMock.ResponseBuilders;
using WireMock.Settings; using WireMock.Settings;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseCreateTests public class ResponseCreateTests
{ {
private readonly WireMockServerSettings _settings = new WireMockServerSettings(); private readonly WireMockServerSettings _settings = new ();
[Fact] [Fact]
public async Task Response_Create_Func() public async Task Response_Create_Func()
@@ -17,14 +18,14 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign // Assign
var responseMessage = new ResponseMessage { StatusCode = 500 }; var responseMessage = new ResponseMessage { StatusCode = 500 };
var request = new RequestMessage(new UrlDetails("http://localhost"), "GET", "::1"); var request = new RequestMessage(new UrlDetails("http://localhost"), "GET", "::1");
var mapping = new Mock<IMapping>().Object;
var responseBuilder = Response.Create(() => responseMessage); var responseBuilder = Response.Create(() => responseMessage);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(mapping, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message).Equals(responseMessage); Check.That(response.Message).Equals(responseMessage);
} }
} }
}
@@ -19,11 +19,14 @@ public class ResponseWithBodyTests
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly Mock<IMapping> _mappingMock;
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly Mock<IFileSystemHandler> _filesystemHandlerMock;
private readonly WireMockServerSettings _settings = new WireMockServerSettings(); private readonly WireMockServerSettings _settings = new ();
public ResponseWithBodyTests() public ResponseWithBodyTests()
{ {
_mappingMock = new Mock<IMapping>();
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); _filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc"); _filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
@@ -44,7 +47,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithBody(new byte[] { 48, 49 }, BodyDestinationFormat.String, Encoding.ASCII); var responseBuilder = Response.Create().WithBody(new byte[] { 48, 49 }, BodyDestinationFormat.String, Encoding.ASCII);
// act // act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// then // then
Check.That(response.Message.BodyData.BodyAsString).Equals("01"); Check.That(response.Message.BodyData.BodyAsString).Equals("01");
@@ -66,7 +69,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithBody(new byte[] { 48, 49 }, BodyDestinationFormat.SameAsSource, Encoding.ASCII); var responseBuilder = Response.Create().WithBody(new byte[] { 48, 49 }, BodyDestinationFormat.SameAsSource, Encoding.ASCII);
// act // act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// then // then
Check.That(response.Message.BodyData.BodyAsBytes).ContainsExactly(new byte[] { 48, 49 }); Check.That(response.Message.BodyData.BodyAsBytes).ContainsExactly(new byte[] { 48, 49 });
@@ -88,7 +91,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithBody("test", null, Encoding.ASCII); var responseBuilder = Response.Create().WithBody("test", null, Encoding.ASCII);
// act // act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// then // then
Check.That(response.Message.BodyData.BodyAsString).Equals("test"); Check.That(response.Message.BodyData.BodyAsString).Equals("test");
@@ -110,7 +113,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithBodyAsJson(x, Encoding.ASCII); var responseBuilder = Response.Create().WithBodyAsJson(x, Encoding.ASCII);
// act // act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// then // then
Check.That(response.Message.BodyData.BodyAsJson).Equals(x); Check.That(response.Message.BodyData.BodyAsJson).Equals(x);
@@ -132,7 +135,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithBodyAsJson(x, true); var responseBuilder = Response.Create().WithBodyAsJson(x, true);
// act // act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// then // then
Check.That(response.Message.BodyData.BodyAsJson).Equals(x); Check.That(response.Message.BodyData.BodyAsJson).Equals(x);
@@ -148,7 +151,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithBody("r", BodyDestinationFormat.SameAsSource, Encoding.ASCII); var responseBuilder = Response.Create().WithBody("r", BodyDestinationFormat.SameAsSource, Encoding.ASCII);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsBytes).IsNull(); Check.That(response.Message.BodyData.BodyAsBytes).IsNull();
@@ -166,7 +169,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithBody("r", BodyDestinationFormat.Bytes, Encoding.ASCII); var responseBuilder = Response.Create().WithBody("r", BodyDestinationFormat.Bytes, Encoding.ASCII);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).IsNull(); Check.That(response.Message.BodyData.BodyAsString).IsNull();
@@ -184,7 +187,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithBody("{ \"value\": 42 }", BodyDestinationFormat.Json, Encoding.ASCII); var responseBuilder = Response.Create().WithBody("{ \"value\": 42 }", BodyDestinationFormat.Json, Encoding.ASCII);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).IsNull(); Check.That(response.Message.BodyData.BodyAsString).IsNull();
@@ -206,7 +209,7 @@ public class ResponseWithBodyTests
.WithBody(req => $"path: {req.Path}"); .WithBody(req => $"path: {req.Path}");
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("path: /test"); Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("path: /test");
@@ -235,7 +238,7 @@ public class ResponseWithBodyTests
}); });
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("path: /test"); Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("path: /test");
@@ -263,8 +266,8 @@ public class ResponseWithBodyTests
.WithTransformer(); .WithTransformer();
// Act // Act
var response1 = await responseBuilder.ProvideResponseAsync(request1, _settings).ConfigureAwait(false); var response1 = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request1, _settings).ConfigureAwait(false);
var response2 = await responseBuilder.ProvideResponseAsync(request2, _settings).ConfigureAwait(false); var response2 = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request2, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(((JToken)response1.Message.BodyData.BodyAsJson).SelectToken("id")?.Value<int>()).IsEqualTo(request1Id); Check.That(((JToken)response1.Message.BodyData.BodyAsJson).SelectToken("id")?.Value<int>()).IsEqualTo(request1Id);
@@ -288,7 +291,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithStatusCode(200).WithBody(fileContents); var responseBuilder = Response.Create().WithStatusCode(200).WithBody(fileContents);
var response = await responseBuilder.ProvideResponseAsync(request1, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request1, _settings).ConfigureAwait(false);
Check.That(response.Message.StatusCode).IsEqualTo(200); Check.That(response.Message.StatusCode).IsEqualTo(200);
Check.That(response.Message.BodyData.BodyAsString).Contains(fileContents); Check.That(response.Message.BodyData.BodyAsString).Contains(fileContents);
@@ -304,7 +307,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithStatusCode(200).WithBody(fileContents); var responseBuilder = Response.Create().WithStatusCode(200).WithBody(fileContents);
var response = await responseBuilder.ProvideResponseAsync(request1, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request1, _settings).ConfigureAwait(false);
Check.That(response.Message.StatusCode).IsEqualTo(200); Check.That(response.Message.StatusCode).IsEqualTo(200);
Check.That(response.Message.BodyData.BodyAsString).Contains(fileContents); Check.That(response.Message.BodyData.BodyAsString).Contains(fileContents);
@@ -320,7 +323,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithStatusCode(200).WithBody("File deleted."); var responseBuilder = Response.Create().WithStatusCode(200).WithBody("File deleted.");
var response = await responseBuilder.ProvideResponseAsync(request1, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request1, _settings).ConfigureAwait(false);
Check.That(response.Message.StatusCode).IsEqualTo(200); Check.That(response.Message.StatusCode).IsEqualTo(200);
Check.That(response.Message.BodyData.BodyAsString).Contains("File deleted."); Check.That(response.Message.BodyData.BodyAsString).Contains("File deleted.");
@@ -341,7 +344,7 @@ public class ResponseWithBodyTests
var responseBuilder = Response.Create().WithBody(new { foo = "bar", n = 42 }, new JsonConverter.System.Text.Json.SystemTextJsonConverter()); var responseBuilder = Response.Create().WithBody(new { foo = "bar", n = 42 }, new JsonConverter.System.Text.Json.SystemTextJsonConverter());
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.BodyData!.BodyAsString.Should().Be(@"{""foo"":""bar"",""n"":42}"); response.Message.BodyData!.BodyAsString.Should().Be(@"{""foo"":""bar"",""n"":42}");
@@ -11,17 +11,20 @@ using WireMock.Types;
using WireMock.Util; using WireMock.Util;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithCallbackTests public class ResponseWithCallbackTests
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly Mock<IMapping> _mappingMock;
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly Mock<IFileSystemHandler> _filesystemHandlerMock;
private readonly WireMockServerSettings _settings = new WireMockServerSettings(); private readonly WireMockServerSettings _settings = new();
public ResponseWithCallbackTests() public ResponseWithCallbackTests()
{ {
_mappingMock = new Mock<IMapping>();
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); _filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc"); _filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
@@ -50,7 +53,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
}); });
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(requestMessage, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, requestMessage, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.BodyData.BodyAsString.Should().Be("/fooBar"); response.Message.BodyData.BodyAsString.Should().Be("/fooBar");
@@ -74,7 +77,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
}); });
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(requestMessage, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, requestMessage, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.BodyData.BodyAsString.Should().Be("/fooBar"); response.Message.BodyData.BodyAsString.Should().Be("/fooBar");
@@ -103,7 +106,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
}); });
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(requestMessage, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, requestMessage, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.BodyData.BodyAsString.Should().Be("/fooBar"); response.Message.BodyData.BodyAsString.Should().Be("/fooBar");
@@ -135,7 +138,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithHeader(header, "Stef"); .WithHeader(header, "Stef");
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(requestMessage, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, requestMessage, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.BodyData.BodyAsString.Should().Be("/fooBar"); response.Message.BodyData.BodyAsString.Should().Be("/fooBar");
@@ -161,11 +164,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(requestMessage, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, requestMessage, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.BodyData.BodyAsString.Should().Be("/fooBar"); response.Message.BodyData.BodyAsString.Should().Be("/fooBar");
response.Message.StatusCode.Should().Be(302); response.Message.StatusCode.Should().Be(302);
} }
} }
}
@@ -1,17 +1,25 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using FluentAssertions; using FluentAssertions;
using Moq;
using WireMock.Models; using WireMock.Models;
using WireMock.ResponseBuilders; using WireMock.ResponseBuilders;
using WireMock.Settings; using WireMock.Settings;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithFaultTests public class ResponseWithFaultTests
{ {
private readonly WireMockServerSettings _settings = new WireMockServerSettings(); private readonly WireMockServerSettings _settings = new();
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly Mock<IMapping> _mappingMock;
public ResponseWithFaultTests()
{
_mappingMock = new Mock<IMapping>();
}
[Theory] [Theory]
[InlineData(FaultType.EMPTY_RESPONSE)] [InlineData(FaultType.EMPTY_RESPONSE)]
[InlineData(FaultType.MALFORMED_RESPONSE_CHUNK)] [InlineData(FaultType.MALFORMED_RESPONSE_CHUNK)]
@@ -22,7 +30,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Act // Act
var responseBuilder = Response.Create().WithFault(faultType); var responseBuilder = Response.Create().WithFault(faultType);
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.FaultType.Should().Be(faultType); response.Message.FaultType.Should().Be(faultType);
@@ -38,11 +46,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Act // Act
var responseBuilder = Response.Create().WithFault(faultType, percentage); var responseBuilder = Response.Create().WithFault(faultType, percentage);
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.FaultType.Should().Be(faultType); response.Message.FaultType.Should().Be(faultType);
response.Message.FaultPercentage.Should().Be(percentage); response.Message.FaultPercentage.Should().Be(percentage);
} }
} }
}
@@ -9,16 +9,20 @@ using WireMock.ResponseBuilders;
using WireMock.Settings; using WireMock.Settings;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithHandlebarsFileTests public class ResponseWithHandlebarsFileTests
{ {
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly WireMockServerSettings _settings = new();
private readonly WireMockServerSettings _settings = new WireMockServerSettings();
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly Mock<IMapping> _mappingMock;
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock;
public ResponseWithHandlebarsFileTests() public ResponseWithHandlebarsFileTests()
{ {
_mappingMock = new Mock<IMapping>();
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); _filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc"); _filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
@@ -39,7 +43,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -64,7 +68,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -89,11 +93,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws<HandlebarsException>(); Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings)).Throws<HandlebarsException>();
// Verify // Verify
_filesystemHandlerMock.Verify(fs => fs.ReadResponseBodyAsString(It.IsAny<string>()), Times.Never); _filesystemHandlerMock.Verify(fs => fs.ReadResponseBodyAsString(It.IsAny<string>()), Times.Never);
_filesystemHandlerMock.VerifyNoOtherCalls(); _filesystemHandlerMock.VerifyNoOtherCalls();
} }
} }
}
@@ -9,21 +9,20 @@ using WireMock.Types;
using WireMock.Util; using WireMock.Util;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithHandlebarsHelpersTests public class ResponseWithHandlebarsHelpersTests
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly WireMockServerSettings _settings = new();
private readonly WireMockServerSettings _settings = new WireMockServerSettings();
public ResponseWithHandlebarsHelpersTests() public ResponseWithHandlebarsHelpersTests()
{ {
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc"); filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = _filesystemHandlerMock.Object; _settings.FileSystemHandler = filesystemHandlerMock.Object;
} }
[Fact] [Fact]
@@ -39,10 +38,9 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(new Mock<IMapping>().Object, request, _settings).ConfigureAwait(false);
// assert // assert
Check.That(response.Message.BodyData.BodyAsString).Equals("ABC"); Check.That(response.Message.BodyData.BodyAsString).Equals("ABC");
} }
} }
}
@@ -9,21 +9,23 @@ using WireMock.ResponseBuilders;
using WireMock.Settings; using WireMock.Settings;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithHandlebarsHumanizerTests public class ResponseWithHandlebarsHumanizerTests
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly WireMockServerSettings _settings = new();
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly Mock<IMapping> _mappingMock;
private readonly WireMockServerSettings _settings = new WireMockServerSettings();
public ResponseWithHandlebarsHumanizerTests() public ResponseWithHandlebarsHumanizerTests()
{ {
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); _mappingMock = new Mock<IMapping>();
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = _filesystemHandlerMock.Object; var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = filesystemHandlerMock.Object;
} }
[Fact] [Fact]
@@ -40,11 +42,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
Check.That(j["Text"].Value<string>()).IsEqualTo("Pascal case input string is turned into sentence"); Check.That(j["Text"].Value<string>()).IsEqualTo("Pascal case input string is turned into sentence");
} }
} }
}
@@ -13,21 +13,23 @@ using WireMock.Types;
using WireMock.Util; using WireMock.Util;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithHandlebarsJsonPathTests public class ResponseWithHandlebarsJsonPathTests
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly WireMockServerSettings _settings = new();
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly Mock<IMapping> _mappingMock;
private readonly WireMockServerSettings _settings = new WireMockServerSettings();
public ResponseWithHandlebarsJsonPathTests() public ResponseWithHandlebarsJsonPathTests()
{ {
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); _mappingMock = new Mock<IMapping>();
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = _filesystemHandlerMock.Object; var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = filesystemHandlerMock.Object;
} }
[Fact] [Fact]
@@ -77,7 +79,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -103,7 +105,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -157,7 +159,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals($"{{{Environment.NewLine} \"Name\": \"Acme Co\",{Environment.NewLine} \"Products\": [{Environment.NewLine} {{{Environment.NewLine} \"Name\": \"Anvil\",{Environment.NewLine} \"Price\": 50{Environment.NewLine} }}{Environment.NewLine} ]{Environment.NewLine}}}"); Check.That(response.Message.BodyData.BodyAsString).Equals($"{{{Environment.NewLine} \"Name\": \"Acme Co\",{Environment.NewLine} \"Products\": [{Environment.NewLine} {{{Environment.NewLine} \"Name\": \"Anvil\",{Environment.NewLine} \"Price\": 50{Environment.NewLine} }}{Environment.NewLine} ]{Environment.NewLine}}}");
@@ -210,7 +212,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals($"{{{Environment.NewLine} \"Name\": \"Acme Co\",{Environment.NewLine} \"Products\": [{Environment.NewLine} {{{Environment.NewLine} \"Name\": \"Anvil\",{Environment.NewLine} \"Price\": 50{Environment.NewLine} }}{Environment.NewLine} ]{Environment.NewLine}}}"); Check.That(response.Message.BodyData.BodyAsString).Equals($"{{{Environment.NewLine} \"Name\": \"Acme Co\",{Environment.NewLine} \"Products\": [{Environment.NewLine} {{{Environment.NewLine} \"Name\": \"Anvil\",{Environment.NewLine} \"Price\": 50{Environment.NewLine} }}{Environment.NewLine} ]{Environment.NewLine}}}");
@@ -263,7 +265,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%"); Check.That(response.Message.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%");
@@ -316,7 +318,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%"); Check.That(response.Message.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%");
@@ -345,7 +347,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws<ArgumentNullException>(); Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings)).Throws<ArgumentNullException>();
} }
[Fact] [Fact]
@@ -369,10 +371,9 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithBodyFromFile(@"c:\\{{JsonPath.SelectToken request.body " + jsonPath + "}}\\test.json"); // why use a \\ here ? .WithBodyFromFile(@"c:\\{{JsonPath.SelectToken request.body " + jsonPath + "}}\\test.json"); // why use a \\ here ?
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.json"); Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.json");
} }
} }
}
@@ -13,19 +13,22 @@ using WireMock.Types;
using WireMock.Util; using WireMock.Util;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithHandlebarsLinqTests public class ResponseWithHandlebarsLinqTests
{ {
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly WireMockServerSettings _settings = new();
private readonly WireMockServerSettings _settings = new WireMockServerSettings();
private Mock<IMapping> mappingMock;
public ResponseWithHandlebarsLinqTests() public ResponseWithHandlebarsLinqTests()
{ {
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); mappingMock = new Mock<IMapping>();
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = _filesystemHandlerMock.Object; var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = filesystemHandlerMock.Object;
} }
[Fact] [Fact]
@@ -42,7 +45,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -72,7 +75,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -102,7 +105,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -132,7 +135,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -157,7 +160,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws<ArgumentException>(); Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(mappingMock.Object, request, _settings)).Throws<ArgumentException>();
} }
[Fact] [Fact]
@@ -173,7 +176,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws<ArgumentNullException>(); Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(mappingMock.Object, request, _settings)).Throws<ArgumentNullException>();
} }
[Fact] [Fact]
@@ -189,7 +192,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws<HandlebarsException>(); Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(mappingMock.Object, request, _settings)).Throws<HandlebarsException>();
} }
[Fact] [Fact]
@@ -213,7 +216,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
Func<Task> a = async () => await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); Func<Task> a = async () => await responseBuilder.ProvideResponseAsync(mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
a.Should().ThrowAsync<HandlebarsException>(); a.Should().ThrowAsync<HandlebarsException>();
@@ -240,10 +243,9 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
Func<Task> a = async () => await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); Func<Task> a = async () => await responseBuilder.ProvideResponseAsync(mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
a.Should().ThrowAsync<HandlebarsException>(); a.Should().ThrowAsync<HandlebarsException>();
} }
} }
}
@@ -10,16 +10,19 @@ using WireMock.Settings;
using WireMock.Types; using WireMock.Types;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithHandlebarsRandomTests public class ResponseWithHandlebarsRandomTests
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly WireMockServerSettings _settings = new();
private readonly WireMockServerSettings _settings = new WireMockServerSettings(); private readonly Mock<IMapping> _mappingMock;
public ResponseWithHandlebarsRandomTests() public ResponseWithHandlebarsRandomTests()
{ {
_mappingMock = new Mock<IMapping>();
var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc"); filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
@@ -43,7 +46,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -66,7 +69,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -91,7 +94,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(options); .WithTransformer(options);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -113,7 +116,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -137,7 +140,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -159,11 +162,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
Check.That(j["Integer"].Value<int>()).IsStrictlyGreaterThan(10000000).And.IsStrictlyLessThan(99999999); Check.That(j["Integer"].Value<int>()).IsStrictlyGreaterThan(10000000).And.IsStrictlyLessThan(99999999);
} }
} }
}
@@ -10,21 +10,23 @@ using WireMock.Types;
using WireMock.Util; using WireMock.Util;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithHandlebarsRegexTests public class ResponseWithHandlebarsRegexTests
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly WireMockServerSettings _settings = new();
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly Mock<IMapping> _mappingMock;
private readonly WireMockServerSettings _settings = new WireMockServerSettings();
public ResponseWithHandlebarsRegexTests() public ResponseWithHandlebarsRegexTests()
{ {
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); _mappingMock = new Mock<IMapping>();
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = _filesystemHandlerMock.Object; var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = filesystemHandlerMock.Object;
} }
[Fact] [Fact]
@@ -40,7 +42,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// assert // assert
Check.That(response.Message.BodyData.BodyAsString).Equals("abc"); Check.That(response.Message.BodyData.BodyAsString).Equals("abc");
@@ -59,7 +61,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// assert // assert
Check.That(response.Message.BodyData.BodyAsString).Equals(""); Check.That(response.Message.BodyData.BodyAsString).Equals("");
@@ -78,7 +80,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// assert // assert
Check.That(response.Message.BodyData.BodyAsString).Equals("5000-https"); Check.That(response.Message.BodyData.BodyAsString).Equals("5000-https");
@@ -97,7 +99,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// assert // assert
Check.That(response.Message.BodyData.BodyAsString).Equals(""); Check.That(response.Message.BodyData.BodyAsString).Equals("");
@@ -116,7 +118,6 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act and Assert // Act and Assert
Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws<ArgumentNullException>(); Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings)).Throws<ArgumentNullException>();
}
} }
} }
@@ -14,21 +14,23 @@ using FluentAssertions;
using Wmhelp.XPath2; using Wmhelp.XPath2;
#endif #endif
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithHandlebarsXPathTests public class ResponseWithHandlebarsXPathTests
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly WireMockServerSettings _settings = new();
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly Mock<IMapping> _mappingMock;
private readonly WireMockServerSettings _settings = new WireMockServerSettings();
public ResponseWithHandlebarsXPathTests() public ResponseWithHandlebarsXPathTests()
{ {
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); _mappingMock = new Mock<IMapping>();
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = _filesystemHandlerMock.Object; var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = filesystemHandlerMock.Object;
} }
[Fact] [Fact]
@@ -53,7 +55,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
var nav = new XmlDocument { InnerXml = response.Message.BodyData.BodyAsString }.CreateNavigator(); var nav = new XmlDocument { InnerXml = response.Message.BodyData.BodyAsString }.CreateNavigator();
@@ -84,7 +86,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("abc"); Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("abc");
@@ -112,7 +114,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
var nav = new XmlDocument { InnerXml = response.Message.BodyData.BodyAsString }.CreateNavigator(); var nav = new XmlDocument { InnerXml = response.Message.BodyData.BodyAsString }.CreateNavigator();
@@ -170,7 +172,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.BodyData.BodyAsString.Should().Contain("TokenIdLijst").And.Contain("0000083256").And.Contain("0000083259"); response.Message.BodyData.BodyAsString.Should().Contain("TokenIdLijst").And.Contain("0000083256").And.Contain("0000083259");
@@ -198,7 +200,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).IsEqualIgnoringCase("True"); Check.That(response.Message.BodyData.BodyAsString).IsEqualIgnoringCase("True");
@@ -226,10 +228,9 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("a1"); Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("a1");
} }
} }
}
@@ -1,4 +1,4 @@
using Moq; using Moq;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NFluent; using NFluent;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -8,21 +8,23 @@ using WireMock.ResponseBuilders;
using WireMock.Settings; using WireMock.Settings;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithHandlebarsXegerTests public class ResponseWithHandlebarsXegerTests
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly WireMockServerSettings _settings = new();
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly Mock<IMapping> _mappingMock;
private readonly WireMockServerSettings _settings = new WireMockServerSettings();
public ResponseWithHandlebarsXegerTests() public ResponseWithHandlebarsXegerTests()
{ {
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); _mappingMock = new Mock<IMapping>();
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = _filesystemHandlerMock.Object; var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = filesystemHandlerMock.Object;
} }
[Fact] [Fact]
@@ -40,7 +42,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -63,7 +65,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings);
// Assert // Assert
JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson); JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
@@ -71,4 +73,3 @@ namespace WireMock.Net.Tests.ResponseBuilders
Check.That(j["Postcode"].Value<string>()).IsNotEmpty(); Check.That(j["Postcode"].Value<string>()).IsNotEmpty();
} }
} }
}
@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Moq;
using NFluent; using NFluent;
using WireMock.Models; using WireMock.Models;
using WireMock.ResponseBuilders; using WireMock.ResponseBuilders;
@@ -7,13 +8,20 @@ using WireMock.Settings;
using WireMock.Types; using WireMock.Types;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithHeadersTests public class ResponseWithHeadersTests
{ {
private readonly WireMockServerSettings _settings = new WireMockServerSettings(); private readonly WireMockServerSettings _settings = new();
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly Mock<IMapping> _mappingMock;
public ResponseWithHeadersTests()
{
_mappingMock = new Mock<IMapping>();
}
[Theory] [Theory]
[InlineData("Content-Length", "1024")] [InlineData("Content-Length", "1024")]
[InlineData("Transfer-Encoding", "identity")] [InlineData("Transfer-Encoding", "identity")]
@@ -25,7 +33,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
IResponseBuilder builder = Response.Create().WithHeader(headerName, headerValue); IResponseBuilder builder = Response.Create().WithHeader(headerName, headerValue);
// Act // Act
var response = await builder.ProvideResponseAsync(requestMock, _settings).ConfigureAwait(false); var response = await builder.ProvideResponseAsync(_mappingMock.Object, requestMock, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.Headers[headerName].ToString()).Equals(headerValue); Check.That(response.Message.Headers[headerName].ToString()).Equals(headerValue);
@@ -41,7 +49,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
IResponseBuilder builder = Response.Create().WithHeader(headerName, headerValues); IResponseBuilder builder = Response.Create().WithHeader(headerName, headerValues);
// Act // Act
var response = await builder.ProvideResponseAsync(requestMock, _settings).ConfigureAwait(false); var response = await builder.ProvideResponseAsync(_mappingMock.Object, requestMock, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.Headers[headerName].ToArray()).Equals(headerValues); Check.That(response.Message.Headers[headerName].ToArray()).Equals(headerValues);
@@ -56,7 +64,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithHeaders(headers); var response = Response.Create().WithHeaders(headers);
// Act // Act
var responseMessage = await response.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var responseMessage = await response.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(responseMessage.Message.Headers["h"]).ContainsExactly("x"); Check.That(responseMessage.Message.Headers["h"]).ContainsExactly("x");
@@ -71,7 +79,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var responseBuilder = Response.Create().WithHeaders(headers); var responseBuilder = Response.Create().WithHeaders(headers);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.Headers["h"]).ContainsExactly("x"); Check.That(response.Message.Headers["h"]).ContainsExactly("x");
@@ -86,10 +94,9 @@ namespace WireMock.Net.Tests.ResponseBuilders
var builder = Response.Create().WithHeaders(headers); var builder = Response.Create().WithHeaders(headers);
// Act // Act
var response = await builder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await builder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.Headers["h"]).ContainsExactly("x"); Check.That(response.Message.Headers["h"]).ContainsExactly("x");
} }
} }
}
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net.Http; using System.Net.Http;
using System.Threading.Tasks; using System.Threading.Tasks;
using Moq;
using NFluent; using NFluent;
using WireMock.Models; using WireMock.Models;
using WireMock.RequestBuilders; using WireMock.RequestBuilders;
@@ -12,17 +13,21 @@ using WireMock.Types;
using WireMock.Util; using WireMock.Util;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithProxyTests : IDisposable public class ResponseWithProxyTests : IDisposable
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly WireMockServerSettings _settings = new WireMockServerSettings(); private readonly WireMockServerSettings _settings = new();
private readonly WireMockServer _server; private readonly WireMockServer _server;
private readonly Guid _guid; private readonly Guid _guid;
private readonly Mock<IMapping> _mappingMock;
public ResponseWithProxyTests() public ResponseWithProxyTests()
{ {
_mappingMock = new Mock<IMapping>();
_guid = Guid.NewGuid(); _guid = Guid.NewGuid();
_server = WireMockServer.Start(); _server = WireMockServer.Start();
@@ -49,7 +54,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var responseBuilder = Response.Create().WithProxy(_server.Urls[0]); var responseBuilder = Response.Create().WithProxy(_server.Urls[0]);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(request.ProxyUrl).IsNotNull(); Check.That(request.ProxyUrl).IsNotNull();
@@ -77,7 +82,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Act // Act
var request = new RequestMessage(new UrlDetails($"{_server.Urls[0]}/{_guid}"), "GET", ClientIp); var request = new RequestMessage(new UrlDetails($"{_server.Urls[0]}/{_guid}"), "GET", ClientIp);
Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws<HttpRequestException>(); Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings)).Throws<HttpRequestException>();
} }
public void Dispose() public void Dispose()
@@ -86,4 +91,3 @@ namespace WireMock.Net.Tests.ResponseBuilders
_server?.Dispose(); _server?.Dispose();
} }
} }
}
@@ -16,21 +16,23 @@ using Microsoft.Owin;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
#endif #endif
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithScribanTests public class ResponseWithScribanTests
{ {
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly WireMockServerSettings _settings = new();
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock; private readonly Mock<IMapping> _mappingMock;
private readonly WireMockServerSettings _settings = new WireMockServerSettings();
public ResponseWithScribanTests() public ResponseWithScribanTests()
{ {
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); _mappingMock = new Mock<IMapping>();
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = _filesystemHandlerMock.Object; var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settings.FileSystemHandler = filesystemHandlerMock.Object;
} }
[Fact] [Fact]
@@ -43,7 +45,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var responseBuilder = Response.Create().WithTransformer(TransformerType.ScribanDotLiquid); var responseBuilder = Response.Create().WithTransformer(TransformerType.ScribanDotLiquid);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.BodyData.Should().BeNull(); response.Message.BodyData.Should().BeNull();
@@ -65,10 +67,9 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(TransformerType.Scriban); .WithTransformer(TransformerType.Scriban);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt"); Check.That(response.Message.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt");
} }
} }
}
@@ -7,11 +7,11 @@ using WireMock.ResponseBuilders;
using WireMock.Settings; using WireMock.Settings;
using Xunit; using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithStatusCodeTests public class ResponseWithStatusCodeTests
{ {
private readonly Mock<WireMockServerSettings> _settingsMock = new Mock<WireMockServerSettings>(); private readonly Mock<WireMockServerSettings> _settingsMock = new();
private const string ClientIp = "::1"; private const string ClientIp = "::1";
[Theory] [Theory]
@@ -40,10 +40,9 @@ namespace WireMock.Net.Tests.ResponseBuilders
break; break;
} }
var response = await responseBuilder.ProvideResponseAsync(request, _settingsMock.Object).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(new Mock<IMapping>().Object, request, _settingsMock.Object).ConfigureAwait(false);
// Assert // Assert
response.Message.StatusCode.Should().Be(expectedStatusCode); response.Message.StatusCode.Should().Be(expectedStatusCode);
} }
} }
}
@@ -20,16 +20,19 @@ using Microsoft.Owin;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
#endif #endif
namespace WireMock.Net.Tests.ResponseBuilders namespace WireMock.Net.Tests.ResponseBuilders;
{
public class ResponseWithTransformerTests public class ResponseWithTransformerTests
{ {
private readonly WireMockServerSettings _settings = new WireMockServerSettings(); private readonly WireMockServerSettings _settings = new();
private const string ClientIp = "::1"; private const string ClientIp = "::1";
private readonly Mock<IMapping> _mappingMock;
public ResponseWithTransformerTests() public ResponseWithTransformerTests()
{ {
_mappingMock = new Mock<IMapping>();
var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict); var filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc"); filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
@@ -49,7 +52,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var responseBuilder = Response.Create().WithTransformer(transformerType); var responseBuilder = Response.Create().WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.BodyData.Should().BeNull(); response.Message.BodyData.Should().BeNull();
@@ -74,7 +77,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt"); Check.That(response.Message.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt");
@@ -98,7 +101,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("url=http://localhost/a/b absoluteurl=http://localhost/wiremock/a/b path=/a/b absolutepath=/wiremock/a/b"); Check.That(response.Message.BodyData.BodyAsString).Equals("url=http://localhost/a/b absoluteurl=http://localhost/wiremock/a/b path=/a/b absolutepath=/wiremock/a/b");
@@ -116,7 +119,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("a wiremock"); Check.That(response.Message.BodyData.BodyAsString).Equals("a wiremock");
@@ -136,7 +139,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("a wiremock"); Check.That(response.Message.BodyData.BodyAsString).Equals("a wiremock");
@@ -158,7 +161,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test keya=1,2 idx=1 idx=2 keyb=5"); Check.That(response.Message.BodyData.BodyAsString).Equals("test keya=1,2 idx=1 idx=2 keyb=5");
@@ -182,7 +185,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test keya=1 idx=1 idx=2 keyb=5"); Check.That(response.Message.BodyData.BodyAsString).Equals("test keya=1 idx=1 idx=2 keyb=5");
@@ -205,7 +208,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test"); Check.That(response.Message.BodyData.BodyAsString).Equals("test");
@@ -231,7 +234,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test"); Check.That(response.Message.BodyData.BodyAsString).Equals("test");
@@ -257,7 +260,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test"); Check.That(response.Message.BodyData.BodyAsString).Equals("test");
@@ -278,12 +281,37 @@ namespace WireMock.Net.Tests.ResponseBuilders
var responseBuilder = Response.Create().WithHeader("x", "{{request.headers.Content-Type}}").WithBody("test").WithTransformer(); var responseBuilder = Response.Create().WithHeader("x", "{{request.headers.Content-Type}}").WithBody("test").WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test"); Check.That(response.Message.BodyData!.BodyAsString).Equals("test");
Check.That(response.Message.Headers).ContainsKey("x"); Check.That(response.Message.Headers).ContainsKey("x");
Check.That(response.Message.Headers["x"]).ContainsExactly("text/plain"); Check.That(response.Message.Headers!["x"]).ContainsExactly("text/plain");
}
[Fact]
public async Task Response_ProvideResponse_Handlebars_Header_TransformMapping()
{
// Assign
var guid = Guid.NewGuid();
_mappingMock.SetupGet(m => m.Guid).Returns(guid);
var body = new BodyData
{
BodyAsString = "abc",
DetectedBodyType = BodyType.String
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, body);
var responseBuilder = Response.Create().WithHeader("x", "{{mapping.Guid}}").WithTransformer();
// Act
var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert
response.Message.Headers.Should().NotBeNull();
Check.That(response.Message.Headers).ContainsKey("x");
Check.That(response.Message.Headers!["x"]).ContainsExactly(guid.ToString());
} }
[Fact] [Fact]
@@ -300,7 +328,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var responseBuilder = Response.Create().WithHeader("x", "{{request.headers.Content-Type}}", "{{request.url}}").WithBody("test").WithTransformer(); var responseBuilder = Response.Create().WithHeader("x", "{{request.headers.Content-Type}}", "{{request.url}}").WithBody("test").WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test"); Check.That(response.Message.BodyData.BodyAsString).Equals("test");
@@ -325,7 +353,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var responseBuilder = Response.Create().WithHeader("x", "{{request.Headers[\"Content-Type\"]}}", "{{request.Url}}").WithBody("test").WithTransformer(transformerType); var responseBuilder = Response.Create().WithHeader("x", "{{request.Headers[\"Content-Type\"]}}", "{{request.Url}}").WithBody("test").WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test"); Check.That(response.Message.BodyData.BodyAsString).Equals("test");
@@ -353,7 +381,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsString).Equals("test http://localhost:1234 1234 http localhost"); Check.That(response.Message.BodyData.BodyAsString).Equals("test http://localhost:1234 1234 http localhost");
@@ -380,7 +408,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("{\"x\":\"test /foo_object\"}"); Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("{\"x\":\"test /foo_object\"}");
@@ -400,7 +428,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be("[{\"x\":\"test\"}]"); JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be("[{\"x\":\"test\"}]");
@@ -421,7 +449,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be("[{\"x\":\"test\"}]"); JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be("[{\"x\":\"test\"}]");
@@ -449,7 +477,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// .WithTransformer(transformerType, false, ReplaceNodeOptions.Default); // .WithTransformer(transformerType, false, ReplaceNodeOptions.Default);
// // Act // // Act
// var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); // var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// // Assert // // Assert
// JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be($"{{\"text\":\"{text}\"}}"); // JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be($"{{\"text\":\"{text}\"}}");
@@ -486,7 +514,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType, false, ReplaceNodeOptions.None); .WithTransformer(transformerType, false, ReplaceNodeOptions.None);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be($"{{\"text\":{expected}}}"); JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be($"{{\"text\":{expected}}}");
@@ -523,7 +551,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be($"{{\"text\":{expected}}}"); JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson).Should().Be($"{{\"text\":{expected}}}");
@@ -550,7 +578,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("[\"first\",\"/foo_array\",\"test 1\",\"test 2\",\"last\"]"); Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("[\"first\",\"/foo_array\",\"test 1\",\"test 2\",\"last\"]");
@@ -567,7 +595,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithBodyFromFile(@"c:\\{{request.query.MyUniqueNumber}}\\test.xml"); .WithBodyFromFile(@"c:\\{{request.query.MyUniqueNumber}}\\test.xml");
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.xml"); Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
@@ -586,7 +614,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithBodyFromFile(@"c:\\{{request.query.MyUniqueNumber}}\\test.xml"); .WithBodyFromFile(@"c:\\{{request.query.MyUniqueNumber}}\\test.xml");
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.xml"); Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
@@ -611,7 +639,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithBodyFromFile(@"c:\\{{request.query.MyUniqueNumber}}\\test.xml"); .WithBodyFromFile(@"c:\\{{request.query.MyUniqueNumber}}\\test.xml");
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.xml"); Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
@@ -640,7 +668,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("\"test\""); Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("\"test\"");
@@ -664,7 +692,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(); .WithTransformer();
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("{\"name\":\"WireMock\"}"); Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("{\"name\":\"WireMock\"}");
@@ -690,7 +718,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("{\"name\":\"WireMock\"}"); Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("{\"name\":\"WireMock\"}");
@@ -718,11 +746,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer(transformerType); .WithTransformer(transformerType);
// Act // Act
var response = await responseBuilder.ProvideResponseAsync(request, _settings).ConfigureAwait(false); var response = await responseBuilder.ProvideResponseAsync(_mappingMock.Object, request, _settings).ConfigureAwait(false);
// Assert // Assert
response.Message.BodyData.BodyAsString.Should().Be(text); response.Message.BodyData.BodyAsString.Should().Be(text);
response.Message.BodyData.Encoding.Should().Be(enc); response.Message.BodyData.Encoding.Should().Be(enc);
} }
} }
}