diff --git a/WireMock.Net Solution.sln b/WireMock.Net Solution.sln
index b2a417ee..5e5ab385 100644
--- a/WireMock.Net Solution.sln
+++ b/WireMock.Net Solution.sln
@@ -82,8 +82,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WireMock.Net.Matchers.CShar
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WireMock.Net.Console.Net472.Classic", "examples\WireMock.Net.Console.Net472.Classic\WireMock.Net.Console.Net472.Classic.csproj", "{6580580B-1EFD-4922-B0EC-FF290DB279EE}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WireMock.Net.XamarinUI.Tests", "test\WireMock.Net.XamarinUI.Tests\WireMock.Net.XamarinUI.Tests.csproj", "{0DE14F1B-A51E-4B59-A87C-C6012DCD2844}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -206,14 +204,6 @@ Global
{6580580B-1EFD-4922-B0EC-FF290DB279EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6580580B-1EFD-4922-B0EC-FF290DB279EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6580580B-1EFD-4922-B0EC-FF290DB279EE}.Release|Any CPU.Build.0 = Release|Any CPU
- {0DE14F1B-A51E-4B59-A87C-C6012DCD2844}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0DE14F1B-A51E-4B59-A87C-C6012DCD2844}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0DE14F1B-A51E-4B59-A87C-C6012DCD2844}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0DE14F1B-A51E-4B59-A87C-C6012DCD2844}.Release|Any CPU.Build.0 = Release|Any CPU
- {B6269AAC-170A-4346-8B9A-444DED3D9A44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B6269AAC-170A-4346-8B9A-444DED3D9A44}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B6269AAC-170A-4346-8B9A-444DED3D9A44}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B6269AAC-170A-4346-8B9A-444DED3D9A44}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -247,9 +237,7 @@ Global
{40BF24B5-12E6-4610-9489-138798632E28} = {8F890C6F-9ACC-438D-928A-AD61CDA862F2}
{3F8CF0AE-5F24-4A54-89E7-A3EE829DB5F8} = {985E0ADB-D4B4-473A-AA40-567E279B7946}
{B6269AAC-170A-4346-8B9A-444DED3D9A44} = {8F890C6F-9ACC-438D-928A-AD61CDA862F2}
- {B6269AAC-170A-4346-8B9A-444DED3D9A44} = {8F890C6F-9ACC-438D-928A-AD61CDA862F2}
{6580580B-1EFD-4922-B0EC-FF290DB279EE} = {985E0ADB-D4B4-473A-AA40-567E279B7946}
- {0DE14F1B-A51E-4B59-A87C-C6012DCD2844} = {0BB8B634-407A-4610-A91F-11586990767A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DC539027-9852-430C-B19F-FD035D018458}
diff --git a/examples/WireMock.Net.Service/WireMock.Net.Service.csproj b/examples/WireMock.Net.Service/WireMock.Net.Service.csproj
index b7e0add6..48f876f0 100644
--- a/examples/WireMock.Net.Service/WireMock.Net.Service.csproj
+++ b/examples/WireMock.Net.Service/WireMock.Net.Service.csproj
@@ -32,11 +32,8 @@
4
-
- ..\..\packages\Handlebars.Net.1.9.5\lib\net452\Handlebars.dll
-
-
- ..\..\packages\log4net.2.0.8\lib\net45-full\log4net.dll
+
+ ..\..\packages\log4net.2.0.12\lib\net45\log4net.dll
..\..\packages\Microsoft.Owin.2.0.2\lib\net45\Microsoft.Owin.dll
@@ -57,6 +54,7 @@
..\..\packages\SimMetrics.Net.1.0.5\lib\net45\SimMetrics.Net.dll
+
diff --git a/examples/WireMock.Net.Service/packages.config b/examples/WireMock.Net.Service/packages.config
index 1eef339c..8574a6d4 100644
--- a/examples/WireMock.Net.Service/packages.config
+++ b/examples/WireMock.Net.Service/packages.config
@@ -1,7 +1,6 @@
-
-
+
diff --git a/examples/WireMock.Net.StandAlone.Net452/WireMock.Net.StandAlone.Net452.csproj b/examples/WireMock.Net.StandAlone.Net452/WireMock.Net.StandAlone.Net452.csproj
index 3ed45e96..00a18588 100644
--- a/examples/WireMock.Net.StandAlone.Net452/WireMock.Net.StandAlone.Net452.csproj
+++ b/examples/WireMock.Net.StandAlone.Net452/WireMock.Net.StandAlone.Net452.csproj
@@ -39,8 +39,8 @@
WireMock.Net.StandAlone.Net452.Program
-
- ..\..\packages\log4net.2.0.8\lib\net45-full\log4net.dll
+
+ ..\..\packages\log4net.2.0.12\lib\net45\log4net.dll
..\..\packages\Microsoft.Owin.Host.HttpListener.4.0.0\lib\net451\Microsoft.Owin.Host.HttpListener.dll
@@ -49,12 +49,14 @@
..\..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.6\lib\net45\System.Net.Http.Formatting.dll
+
diff --git a/examples/WireMock.Net.StandAlone.Net452/packages.config b/examples/WireMock.Net.StandAlone.Net452/packages.config
index 63b1c4ba..da1f375a 100644
--- a/examples/WireMock.Net.StandAlone.Net452/packages.config
+++ b/examples/WireMock.Net.StandAlone.Net452/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/WireMock.Net/IMapping.cs b/src/WireMock.Net/IMapping.cs
index f7816a1e..01e557f0 100644
--- a/src/WireMock.Net/IMapping.cs
+++ b/src/WireMock.Net/IMapping.cs
@@ -103,8 +103,8 @@ namespace WireMock
/// ProvideResponseAsync
///
/// The request message.
- /// The .
- Task ProvideResponseAsync(RequestMessage requestMessage);
+ /// The including a new (optional) .
+ Task<(ResponseMessage Message, IMapping Mapping)> ProvideResponseAsync(RequestMessage requestMessage);
///
/// Gets the RequestMatchResult based on the RequestMessage.
diff --git a/src/WireMock.Net/Mapping.cs b/src/WireMock.Net/Mapping.cs
index 031c027a..f253b922 100644
--- a/src/WireMock.Net/Mapping.cs
+++ b/src/WireMock.Net/Mapping.cs
@@ -103,7 +103,7 @@ namespace WireMock
}
///
- public async Task ProvideResponseAsync(RequestMessage requestMessage)
+ public async Task<(ResponseMessage Message, IMapping Mapping)> ProvideResponseAsync(RequestMessage requestMessage)
{
return await Provider.ProvideResponseAsync(requestMessage, Settings);
}
diff --git a/src/WireMock.Net/Models/BodyData.cs b/src/WireMock.Net/Models/BodyData.cs
index 494465e5..1e7d54e0 100644
--- a/src/WireMock.Net/Models/BodyData.cs
+++ b/src/WireMock.Net/Models/BodyData.cs
@@ -6,7 +6,7 @@ namespace WireMock.Util
///
/// BodyData
///
- internal class BodyData : IBodyData
+ public class BodyData : IBodyData
{
///
public Encoding Encoding { get; set; }
diff --git a/src/WireMock.Net/Owin/WireMockMiddleware.cs b/src/WireMock.Net/Owin/WireMockMiddleware.cs
index e5b9eb92..3c49679a 100644
--- a/src/WireMock.Net/Owin/WireMockMiddleware.cs
+++ b/src/WireMock.Net/Owin/WireMockMiddleware.cs
@@ -129,15 +129,16 @@ namespace WireMock.Owin
await Task.Delay(_options.RequestProcessingDelay.Value);
}
- response = await targetMapping.ProvideResponseAsync(request);
+ var (theResponse, theOptionalNewMapping) = await targetMapping.ProvideResponseAsync(request);
+ response = theResponse;
var responseBuilder = targetMapping.Provider as Response;
- if (!targetMapping.IsAdminInterface)
+ if (!targetMapping.IsAdminInterface && theOptionalNewMapping != null)
{
if (responseBuilder?.ProxyAndRecordSettings?.SaveMapping == true || targetMapping?.Settings?.ProxyAndRecordSettings?.SaveMapping == true)
{
- _options.Mappings.TryAdd(targetMapping.Guid, targetMapping);
+ _options.Mappings.TryAdd(theOptionalNewMapping.Guid, theOptionalNewMapping);
}
if (responseBuilder?.ProxyAndRecordSettings?.SaveMappingToFile == true || targetMapping?.Settings?.ProxyAndRecordSettings?.SaveMappingToFile == true)
@@ -146,7 +147,7 @@ namespace WireMock.Owin
var mappingConverter = new MappingConverter(matcherMapper);
var mappingToFileSaver = new MappingToFileSaver(targetMapping.Settings, mappingConverter);
- mappingToFileSaver.SaveMappingToFile(targetMapping);
+ mappingToFileSaver.SaveMappingToFile(theOptionalNewMapping);
}
}
diff --git a/src/WireMock.Net/Proxy/ProxyHelper.cs b/src/WireMock.Net/Proxy/ProxyHelper.cs
index 96d12519..d778a355 100644
--- a/src/WireMock.Net/Proxy/ProxyHelper.cs
+++ b/src/WireMock.Net/Proxy/ProxyHelper.cs
@@ -1,111 +1,111 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Http;
-using System.Threading.Tasks;
-using JetBrains.Annotations;
-using WireMock.Http;
-using WireMock.Matchers;
-using WireMock.RequestBuilders;
-using WireMock.ResponseBuilders;
-using WireMock.Settings;
-using WireMock.Types;
-using WireMock.Util;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Threading.Tasks;
+using JetBrains.Annotations;
+using WireMock.Http;
+using WireMock.Matchers;
+using WireMock.RequestBuilders;
+using WireMock.ResponseBuilders;
+using WireMock.Settings;
+using WireMock.Types;
+using WireMock.Util;
using WireMock.Validation;
-namespace WireMock.Proxy
-{
- internal class ProxyHelper
- {
- private readonly IWireMockServerSettings _settings;
-
- public ProxyHelper([NotNull] IWireMockServerSettings settings)
- {
- Check.NotNull(settings, nameof(settings));
- _settings = settings;
- }
-
- public async Task<(ResponseMessage ResponseMessage, IMapping Mapping)> SendAsync(
- [NotNull] IProxyAndRecordSettings proxyAndRecordSettings,
- [NotNull] HttpClient client,
- [NotNull] RequestMessage requestMessage,
- [NotNull] string url)
- {
- Check.NotNull(client, nameof(client));
- Check.NotNull(requestMessage, nameof(requestMessage));
- Check.NotNull(url, nameof(url));
-
- var originalUri = new Uri(requestMessage.Url);
- var requiredUri = new Uri(url);
-
- // Create HttpRequestMessage
- var httpRequestMessage = HttpRequestMessageHelper.Create(requestMessage, url);
-
- // Call the URL
- var httpResponseMessage = await client.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseContentRead);
-
- // Create ResponseMessage
- bool deserializeJson = !_settings.DisableJsonBodyParsing.GetValueOrDefault(false);
- bool decompressGzipAndDeflate = !_settings.DisableRequestBodyDecompressing.GetValueOrDefault(false);
-
- var responseMessage = await HttpResponseMessageHelper.CreateAsync(httpResponseMessage, requiredUri, originalUri, deserializeJson, decompressGzipAndDeflate);
-
- IMapping mapping = null;
- if (HttpStatusRangeParser.IsMatch(proxyAndRecordSettings.SaveMappingForStatusCodePattern, responseMessage.StatusCode) &&
- (proxyAndRecordSettings.SaveMapping || proxyAndRecordSettings.SaveMappingToFile))
- {
- mapping = ToMapping(proxyAndRecordSettings, requestMessage, responseMessage);
- }
-
- return (responseMessage, mapping);
- }
-
- private IMapping ToMapping(IProxyAndRecordSettings proxyAndRecordSettings, RequestMessage requestMessage, ResponseMessage responseMessage)
- {
- string[] excludedHeaders = proxyAndRecordSettings.ExcludedHeaders ?? new string[] { };
- string[] excludedCookies = proxyAndRecordSettings.ExcludedCookies ?? new string[] { };
-
- var request = Request.Create();
- request.WithPath(requestMessage.Path);
- request.UsingMethod(requestMessage.Method);
-
- requestMessage.Query.Loop((key, value) => request.WithParam(key, false, value.ToArray()));
- requestMessage.Cookies.Loop((key, value) =>
- {
- if (!excludedCookies.Contains(key, StringComparer.OrdinalIgnoreCase))
- {
- request.WithCookie(key, value);
- }
- });
-
- var allExcludedHeaders = new List(excludedHeaders) { "Cookie" };
- requestMessage.Headers.Loop((key, value) =>
- {
- if (!allExcludedHeaders.Contains(key, StringComparer.OrdinalIgnoreCase))
- {
- request.WithHeader(key, value.ToArray());
- }
- });
-
- bool throwExceptionWhenMatcherFails = _settings.ThrowExceptionWhenMatcherFails == true;
- switch (requestMessage.BodyData?.DetectedBodyType)
- {
- case BodyType.Json:
- request.WithBody(new JsonMatcher(MatchBehaviour.AcceptOnMatch, requestMessage.BodyData.BodyAsJson, true, throwExceptionWhenMatcherFails));
- break;
-
- case BodyType.String:
- request.WithBody(new ExactMatcher(MatchBehaviour.AcceptOnMatch, throwExceptionWhenMatcherFails, requestMessage.BodyData.BodyAsString));
- break;
-
- case BodyType.Bytes:
- request.WithBody(new ExactObjectMatcher(MatchBehaviour.AcceptOnMatch, requestMessage.BodyData.BodyAsBytes, throwExceptionWhenMatcherFails));
- break;
- }
-
- var response = Response.Create(responseMessage);
-
- return new Mapping(Guid.NewGuid(), string.Empty, null, _settings, request, response, 0, null, null, null, null, null);
- }
- }
+namespace WireMock.Proxy
+{
+ internal class ProxyHelper
+ {
+ private readonly IWireMockServerSettings _settings;
+
+ public ProxyHelper([NotNull] IWireMockServerSettings settings)
+ {
+ Check.NotNull(settings, nameof(settings));
+ _settings = settings;
+ }
+
+ public async Task<(ResponseMessage Message, IMapping Mapping)> SendAsync(
+ [NotNull] IProxyAndRecordSettings proxyAndRecordSettings,
+ [NotNull] HttpClient client,
+ [NotNull] RequestMessage requestMessage,
+ [NotNull] string url)
+ {
+ Check.NotNull(client, nameof(client));
+ Check.NotNull(requestMessage, nameof(requestMessage));
+ Check.NotNull(url, nameof(url));
+
+ var originalUri = new Uri(requestMessage.Url);
+ var requiredUri = new Uri(url);
+
+ // Create HttpRequestMessage
+ var httpRequestMessage = HttpRequestMessageHelper.Create(requestMessage, url);
+
+ // Call the URL
+ var httpResponseMessage = await client.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseContentRead);
+
+ // Create ResponseMessage
+ bool deserializeJson = !_settings.DisableJsonBodyParsing.GetValueOrDefault(false);
+ bool decompressGzipAndDeflate = !_settings.DisableRequestBodyDecompressing.GetValueOrDefault(false);
+
+ var responseMessage = await HttpResponseMessageHelper.CreateAsync(httpResponseMessage, requiredUri, originalUri, deserializeJson, decompressGzipAndDeflate);
+
+ IMapping mapping = null;
+ if (HttpStatusRangeParser.IsMatch(proxyAndRecordSettings.SaveMappingForStatusCodePattern, responseMessage.StatusCode) &&
+ (proxyAndRecordSettings.SaveMapping || proxyAndRecordSettings.SaveMappingToFile))
+ {
+ mapping = ToMapping(proxyAndRecordSettings, requestMessage, responseMessage);
+ }
+
+ return (responseMessage, mapping);
+ }
+
+ private IMapping ToMapping(IProxyAndRecordSettings proxyAndRecordSettings, RequestMessage requestMessage, ResponseMessage responseMessage)
+ {
+ string[] excludedHeaders = proxyAndRecordSettings.ExcludedHeaders ?? new string[] { };
+ string[] excludedCookies = proxyAndRecordSettings.ExcludedCookies ?? new string[] { };
+
+ var request = Request.Create();
+ request.WithPath(requestMessage.Path);
+ request.UsingMethod(requestMessage.Method);
+
+ requestMessage.Query.Loop((key, value) => request.WithParam(key, false, value.ToArray()));
+ requestMessage.Cookies.Loop((key, value) =>
+ {
+ if (!excludedCookies.Contains(key, StringComparer.OrdinalIgnoreCase))
+ {
+ request.WithCookie(key, value);
+ }
+ });
+
+ var allExcludedHeaders = new List(excludedHeaders) { "Cookie" };
+ requestMessage.Headers.Loop((key, value) =>
+ {
+ if (!allExcludedHeaders.Contains(key, StringComparer.OrdinalIgnoreCase))
+ {
+ request.WithHeader(key, value.ToArray());
+ }
+ });
+
+ bool throwExceptionWhenMatcherFails = _settings.ThrowExceptionWhenMatcherFails == true;
+ switch (requestMessage.BodyData?.DetectedBodyType)
+ {
+ case BodyType.Json:
+ request.WithBody(new JsonMatcher(MatchBehaviour.AcceptOnMatch, requestMessage.BodyData.BodyAsJson, true, throwExceptionWhenMatcherFails));
+ break;
+
+ case BodyType.String:
+ request.WithBody(new ExactMatcher(MatchBehaviour.AcceptOnMatch, throwExceptionWhenMatcherFails, requestMessage.BodyData.BodyAsString));
+ break;
+
+ case BodyType.Bytes:
+ request.WithBody(new ExactObjectMatcher(MatchBehaviour.AcceptOnMatch, requestMessage.BodyData.BodyAsBytes, throwExceptionWhenMatcherFails));
+ break;
+ }
+
+ var response = Response.Create(responseMessage);
+
+ return new Mapping(Guid.NewGuid(), string.Empty, null, _settings, request, response, 0, null, null, null, null, null);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/WireMock.Net/ResponseBuilders/Response.cs b/src/WireMock.Net/ResponseBuilders/Response.cs
index 742fce28..638d05bd 100644
--- a/src/WireMock.Net/ResponseBuilders/Response.cs
+++ b/src/WireMock.Net/ResponseBuilders/Response.cs
@@ -335,7 +335,7 @@ namespace WireMock.ResponseBuilders
}
///
- public async Task ProvideResponseAsync(RequestMessage requestMessage, IWireMockServerSettings settings)
+ public async Task<(ResponseMessage Message, IMapping Mapping)> ProvideResponseAsync(RequestMessage requestMessage, IWireMockServerSettings settings)
{
Check.NotNull(requestMessage, nameof(requestMessage));
Check.NotNull(settings, nameof(settings));
@@ -361,14 +361,12 @@ namespace WireMock.ResponseBuilders
var proxyHelper = new ProxyHelper(settings);
- var (proxyResponseMessage, _) = await proxyHelper.SendAsync(
+ return await proxyHelper.SendAsync(
ProxyAndRecordSettings,
_httpClientForProxy,
requestMessage,
requestMessage.ProxyUrl
);
-
- return proxyResponseMessage;
}
ResponseMessage responseMessage;
@@ -420,7 +418,7 @@ namespace WireMock.ResponseBuilders
throw new NotImplementedException($"TransformerType '{TransformerType}' is not supported.");
}
- return responseMessageTransformer.Transform(requestMessage, responseMessage, UseTransformerForBodyAsFile);
+ return (responseMessageTransformer.Transform(requestMessage, responseMessage, UseTransformerForBodyAsFile), null);
}
if (!UseTransformer && ResponseMessage.BodyData?.BodyAsFileIsCached == true)
@@ -428,7 +426,7 @@ namespace WireMock.ResponseBuilders
ResponseMessage.BodyData.BodyAsBytes = settings.FileSystemHandler.ReadResponseBodyAsFile(responseMessage.BodyData.BodyAsFile);
}
- return responseMessage;
+ return (responseMessage, null);
}
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net/ResponseProviders/DynamicAsyncResponseProvider.cs b/src/WireMock.Net/ResponseProviders/DynamicAsyncResponseProvider.cs
index 230701a8..41a8f7b6 100644
--- a/src/WireMock.Net/ResponseProviders/DynamicAsyncResponseProvider.cs
+++ b/src/WireMock.Net/ResponseProviders/DynamicAsyncResponseProvider.cs
@@ -13,9 +13,9 @@ namespace WireMock.ResponseProviders
_responseMessageFunc = responseMessageFunc;
}
- public Task ProvideResponseAsync(RequestMessage requestMessage, IWireMockServerSettings settings)
+ public async Task<(ResponseMessage Message, IMapping Mapping)> ProvideResponseAsync(RequestMessage requestMessage, IWireMockServerSettings settings)
{
- return _responseMessageFunc(requestMessage);
+ return (await _responseMessageFunc(requestMessage), null);
}
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net/ResponseProviders/DynamicResponseProvider.cs b/src/WireMock.Net/ResponseProviders/DynamicResponseProvider.cs
index 01396f5e..2ec19ebc 100644
--- a/src/WireMock.Net/ResponseProviders/DynamicResponseProvider.cs
+++ b/src/WireMock.Net/ResponseProviders/DynamicResponseProvider.cs
@@ -13,9 +13,10 @@ namespace WireMock.ResponseProviders
_responseMessageFunc = responseMessageFunc;
}
- public Task ProvideResponseAsync(RequestMessage requestMessage, IWireMockServerSettings settings)
+ public Task<(ResponseMessage Message, IMapping Mapping)> ProvideResponseAsync(RequestMessage requestMessage, IWireMockServerSettings settings)
{
- return Task.FromResult(_responseMessageFunc(requestMessage));
+ (ResponseMessage responseMessage, IMapping mapping) result = (_responseMessageFunc(requestMessage), null);
+ return Task.FromResult(result);
}
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net/ResponseProviders/IResponseProvider.cs b/src/WireMock.Net/ResponseProviders/IResponseProvider.cs
index 6d33443b..16eaae64 100644
--- a/src/WireMock.Net/ResponseProviders/IResponseProvider.cs
+++ b/src/WireMock.Net/ResponseProviders/IResponseProvider.cs
@@ -16,7 +16,7 @@ namespace WireMock.ResponseProviders
///
/// The request.
/// The WireMockServerSettings.
- /// The .
- Task ProvideResponseAsync([NotNull] RequestMessage requestMessage, [NotNull] IWireMockServerSettings settings);
+ /// The including a new (optional) .
+ Task<(ResponseMessage Message, IMapping Mapping)> ProvideResponseAsync([NotNull] RequestMessage requestMessage, [NotNull] IWireMockServerSettings settings);
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net/ResponseProviders/ProxyAsyncResponseProvider.cs b/src/WireMock.Net/ResponseProviders/ProxyAsyncResponseProvider.cs
index fb4b6c6d..a67e269e 100644
--- a/src/WireMock.Net/ResponseProviders/ProxyAsyncResponseProvider.cs
+++ b/src/WireMock.Net/ResponseProviders/ProxyAsyncResponseProvider.cs
@@ -15,9 +15,9 @@ namespace WireMock.ResponseProviders
_settings = settings;
}
- public Task ProvideResponseAsync(RequestMessage requestMessage, IWireMockServerSettings settings)
+ public async Task<(ResponseMessage Message, IMapping Mapping)> ProvideResponseAsync(RequestMessage requestMessage, IWireMockServerSettings settings)
{
- return _responseMessageFunc(requestMessage, _settings);
+ return (await _responseMessageFunc(requestMessage, _settings), null);
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/Owin/WireMockMiddlewareTests.cs b/test/WireMock.Net.Tests/Owin/WireMockMiddlewareTests.cs
index f4035a5f..92afea4f 100644
--- a/test/WireMock.Net.Tests/Owin/WireMockMiddlewareTests.cs
+++ b/test/WireMock.Net.Tests/Owin/WireMockMiddlewareTests.cs
@@ -13,7 +13,6 @@ using WireMock.Matchers;
using System.Collections.Generic;
using WireMock.Admin.Mappings;
using WireMock.Admin.Requests;
-using WireMock.ResponseProviders;
using WireMock.Settings;
using FluentAssertions;
using WireMock.Handlers;
@@ -177,7 +176,8 @@ namespace WireMock.Net.Tests.Owin
_mappingMock.SetupGet(m => m.Provider).Returns(responseBuilder);
_mappingMock.SetupGet(m => m.Settings).Returns(settings);
- _mappingMock.Setup(m => m.ProvideResponseAsync(It.IsAny())).ReturnsAsync(new ResponseMessage());
+ var newMappingFromProxy = new Mapping(Guid.NewGuid(), "", null, settings, Request.Create(), Response.Create(), 0, null, null, null, null, null);
+ _mappingMock.Setup(m => m.ProvideResponseAsync(It.IsAny())).ReturnsAsync((new ResponseMessage(), newMappingFromProxy));
var requestBuilder = Request.Create().UsingAnyMethod();
_mappingMock.SetupGet(m => m.RequestMatcher).Returns(requestBuilder);
@@ -230,7 +230,8 @@ namespace WireMock.Net.Tests.Owin
_mappingMock.SetupGet(m => m.Provider).Returns(responseBuilder);
_mappingMock.SetupGet(m => m.Settings).Returns(settings);
- _mappingMock.Setup(m => m.ProvideResponseAsync(It.IsAny())).ReturnsAsync(new ResponseMessage());
+ var newMappingFromProxy = new Mapping(Guid.NewGuid(), "", null, settings, Request.Create(), Response.Create(), 0, null, null, null, null, null);
+ _mappingMock.Setup(m => m.ProvideResponseAsync(It.IsAny())).ReturnsAsync((new ResponseMessage(), newMappingFromProxy));
var requestBuilder = Request.Create().UsingAnyMethod();
_mappingMock.SetupGet(m => m.RequestMatcher).Returns(requestBuilder);
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseCreateTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseCreateTests.cs
index b2ae10ee..0c3e17ae 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseCreateTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseCreateTests.cs
@@ -18,13 +18,13 @@ namespace WireMock.Net.Tests.ResponseBuilders
var responseMessage = new ResponseMessage { StatusCode = 500 };
var request = new RequestMessage(new UrlDetails("http://localhost"), "GET", "::1");
- var response = Response.Create(() => responseMessage);
+ var responseBuilder = Response.Create(() => responseMessage);
// Act
- var providedResponse = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(providedResponse).Equals(responseMessage);
+ Check.That(response.Message).Equals(responseMessage);
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithBodyTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithBodyTests.cs
index 9e1dd29c..8b47c9ca 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithBodyTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithBodyTests.cs
@@ -40,15 +40,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, body);
- var response = 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
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// then
- Check.That(responseMessage.BodyData.BodyAsString).Equals("01");
- Check.That(responseMessage.BodyData.BodyAsBytes).IsNull();
- Check.That(responseMessage.BodyData.Encoding).Equals(Encoding.ASCII);
+ Check.That(response.Message.BodyData.BodyAsString).Equals("01");
+ Check.That(response.Message.BodyData.BodyAsBytes).IsNull();
+ Check.That(response.Message.BodyData.Encoding).Equals(Encoding.ASCII);
}
[Fact]
@@ -62,15 +62,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, body);
- var response = 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
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// then
- Check.That(responseMessage.BodyData.BodyAsBytes).ContainsExactly(new byte[] { 48, 49 });
- Check.That(responseMessage.BodyData.BodyAsString).IsNull();
- Check.That(responseMessage.BodyData.Encoding).IsNull();
+ Check.That(response.Message.BodyData.BodyAsBytes).ContainsExactly(new byte[] { 48, 49 });
+ Check.That(response.Message.BodyData.BodyAsString).IsNull();
+ Check.That(response.Message.BodyData.Encoding).IsNull();
}
[Fact]
@@ -84,14 +84,14 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, body);
- var response = Response.Create().WithBody("test", null, Encoding.ASCII);
+ var responseBuilder = Response.Create().WithBody("test", null, Encoding.ASCII);
// act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// then
- Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
- Check.That(responseMessage.BodyData.Encoding).Equals(Encoding.ASCII);
+ Check.That(response.Message.BodyData.BodyAsString).Equals("test");
+ Check.That(response.Message.BodyData.Encoding).Equals(Encoding.ASCII);
}
[Fact]
@@ -106,14 +106,14 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, body);
object x = new { value = "test" };
- var response = Response.Create().WithBodyAsJson(x, Encoding.ASCII);
+ var responseBuilder = Response.Create().WithBodyAsJson(x, Encoding.ASCII);
// act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// then
- Check.That(responseMessage.BodyData.BodyAsJson).Equals(x);
- Check.That(responseMessage.BodyData.Encoding).Equals(Encoding.ASCII);
+ Check.That(response.Message.BodyData.BodyAsJson).Equals(x);
+ Check.That(response.Message.BodyData.Encoding).Equals(Encoding.ASCII);
}
[Fact]
@@ -128,14 +128,14 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, body);
object x = new { message = "Hello" };
- var response = Response.Create().WithBodyAsJson(x, true);
+ var responseBuilder = Response.Create().WithBodyAsJson(x, true);
// act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// then
- Check.That(responseMessage.BodyData.BodyAsJson).Equals(x);
- Check.That(responseMessage.BodyData.BodyAsJsonIndented).IsEqualTo(true);
+ Check.That(response.Message.BodyData.BodyAsJson).Equals(x);
+ Check.That(response.Message.BodyData.BodyAsJsonIndented).IsEqualTo(true);
}
[Fact]
@@ -144,16 +144,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost"), "GET", ClientIp);
- var response = Response.Create().WithBody("r", BodyDestinationFormat.SameAsSource, Encoding.ASCII);
+ var responseBuilder = Response.Create().WithBody("r", BodyDestinationFormat.SameAsSource, Encoding.ASCII);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsBytes).IsNull();
- Check.That(responseMessage.BodyData.BodyAsJson).IsNull();
- Check.That(responseMessage.BodyData.BodyAsString).Equals("r");
- Check.That(responseMessage.BodyData.Encoding).Equals(Encoding.ASCII);
+ Check.That(response.Message.BodyData.BodyAsBytes).IsNull();
+ Check.That(response.Message.BodyData.BodyAsJson).IsNull();
+ Check.That(response.Message.BodyData.BodyAsString).Equals("r");
+ Check.That(response.Message.BodyData.Encoding).Equals(Encoding.ASCII);
}
[Fact]
@@ -162,16 +162,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost"), "GET", ClientIp);
- var response = Response.Create().WithBody("r", BodyDestinationFormat.Bytes, Encoding.ASCII);
+ var responseBuilder = Response.Create().WithBody("r", BodyDestinationFormat.Bytes, Encoding.ASCII);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).IsNull();
- Check.That(responseMessage.BodyData.BodyAsJson).IsNull();
- Check.That(responseMessage.BodyData.BodyAsBytes).IsNotNull();
- Check.That(responseMessage.BodyData.Encoding).Equals(Encoding.ASCII);
+ Check.That(response.Message.BodyData.BodyAsString).IsNull();
+ Check.That(response.Message.BodyData.BodyAsJson).IsNull();
+ Check.That(response.Message.BodyData.BodyAsBytes).IsNotNull();
+ Check.That(response.Message.BodyData.Encoding).Equals(Encoding.ASCII);
}
[Fact]
@@ -180,16 +180,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost"), "GET", ClientIp);
- var response = Response.Create().WithBody("{ \"value\": 42 }", BodyDestinationFormat.Json, Encoding.ASCII);
+ var responseBuilder = Response.Create().WithBody("{ \"value\": 42 }", BodyDestinationFormat.Json, Encoding.ASCII);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).IsNull();
- Check.That(responseMessage.BodyData.BodyAsBytes).IsNull();
- Check.That(((dynamic)responseMessage.BodyData.BodyAsJson).value).Equals(42);
- Check.That(responseMessage.BodyData.Encoding).Equals(Encoding.ASCII);
+ Check.That(response.Message.BodyData.BodyAsString).IsNull();
+ Check.That(response.Message.BodyData.BodyAsBytes).IsNull();
+ Check.That(((dynamic)response.Message.BodyData.BodyAsJson).value).Equals(42);
+ Check.That(response.Message.BodyData.Encoding).Equals(Encoding.ASCII);
}
[Fact]
@@ -198,23 +198,23 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost/test"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithStatusCode(500)
.WithHeader("H1", "X1")
.WithHeader("H2", "X2")
.WithBody(req => $"path: {req.Path}");
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo("path: /test");
- Check.That(responseMessage.BodyData.BodyAsBytes).IsNull();
- Check.That(responseMessage.BodyData.BodyAsJson).IsNull();
- Check.That(responseMessage.BodyData.Encoding.CodePage).Equals(Encoding.UTF8.CodePage);
- Check.That(responseMessage.StatusCode).IsEqualTo(500);
- Check.That(responseMessage.Headers["H1"].ToString()).IsEqualTo("X1");
- Check.That(responseMessage.Headers["H2"].ToString()).IsEqualTo("X2");
+ Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("path: /test");
+ Check.That(response.Message.BodyData.BodyAsBytes).IsNull();
+ Check.That(response.Message.BodyData.BodyAsJson).IsNull();
+ Check.That(response.Message.BodyData.Encoding.CodePage).Equals(Encoding.UTF8.CodePage);
+ Check.That(response.Message.StatusCode).IsEqualTo(500);
+ Check.That(response.Message.Headers["H1"].ToString()).IsEqualTo("X1");
+ Check.That(response.Message.Headers["H2"].ToString()).IsEqualTo("X2");
}
[Fact]
@@ -223,7 +223,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost/test"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithStatusCode(500)
.WithHeader("H1", "X1")
.WithHeader("H2", "X2")
@@ -234,16 +234,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
});
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo("path: /test");
- Check.That(responseMessage.BodyData.BodyAsBytes).IsNull();
- Check.That(responseMessage.BodyData.BodyAsJson).IsNull();
- Check.That(responseMessage.BodyData.Encoding.CodePage).Equals(Encoding.UTF8.CodePage);
- Check.That(responseMessage.StatusCode).IsEqualTo(500);
- Check.That(responseMessage.Headers["H1"].ToString()).IsEqualTo("X1");
- Check.That(responseMessage.Headers["H2"].ToString()).IsEqualTo("X2");
+ Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("path: /test");
+ Check.That(response.Message.BodyData.BodyAsBytes).IsNull();
+ Check.That(response.Message.BodyData.BodyAsJson).IsNull();
+ Check.That(response.Message.BodyData.Encoding.CodePage).Equals(Encoding.UTF8.CodePage);
+ Check.That(response.Message.StatusCode).IsEqualTo(500);
+ Check.That(response.Message.Headers["H1"].ToString()).IsEqualTo("X1");
+ Check.That(response.Message.Headers["H2"].ToString()).IsEqualTo("X2");
}
[Fact]
@@ -256,25 +256,25 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request1 = new RequestMessage(new UrlDetails($"http://localhost/test?id={request1Id}"), "GET", ClientIp);
var request2 = new RequestMessage(new UrlDetails($"http://localhost/test?id={request2Id}"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithStatusCode(200)
.WithBodyAsJson(JObject.Parse("{ \"id\": \"{{request.query.id}}\" }"))
.WithTransformer();
// Act
- var response1Message = await response.ProvideResponseAsync(request1, _settings);
- var response2Message = await response.ProvideResponseAsync(request2, _settings);
+ var response1 = await responseBuilder.ProvideResponseAsync(request1, _settings);
+ var response2 = await responseBuilder.ProvideResponseAsync(request2, _settings);
// Assert
- Check.That(((JToken)response1Message.BodyData.BodyAsJson).SelectToken("id")?.Value()).IsEqualTo(request1Id);
- Check.That(response1Message.BodyData.BodyAsBytes).IsNull();
- Check.That(response1Message.BodyData.BodyAsString).IsNull();
- Check.That(response1Message.StatusCode).IsEqualTo(200);
+ Check.That(((JToken)response1.Message.BodyData.BodyAsJson).SelectToken("id")?.Value()).IsEqualTo(request1Id);
+ Check.That(response1.Message.BodyData.BodyAsBytes).IsNull();
+ Check.That(response1.Message.BodyData.BodyAsString).IsNull();
+ Check.That(response1.Message.StatusCode).IsEqualTo(200);
- Check.That(((JToken)response2Message.BodyData.BodyAsJson).SelectToken("id")?.Value()).IsEqualTo(request2Id);
- Check.That(response2Message.BodyData.BodyAsBytes).IsNull();
- Check.That(response2Message.BodyData.BodyAsString).IsNull();
- Check.That(response2Message.StatusCode).IsEqualTo(200);
+ Check.That(((JToken)response2.Message.BodyData.BodyAsJson).SelectToken("id")?.Value()).IsEqualTo(request2Id);
+ Check.That(response2.Message.BodyData.BodyAsBytes).IsNull();
+ Check.That(response2.Message.BodyData.BodyAsString).IsNull();
+ Check.That(response2.Message.StatusCode).IsEqualTo(200);
}
[Fact]
@@ -285,12 +285,12 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request1 = new RequestMessage(new UrlDetails("http://localhost/__admin/files/filename.txt"), "PUT", ClientIp, bodyDataAsFile);
- var response = Response.Create().WithStatusCode(200).WithBody(fileContents);
+ var responseBuilder = Response.Create().WithStatusCode(200).WithBody(fileContents);
- var provideResponseAsync = await response.ProvideResponseAsync(request1, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request1, _settings);
- Check.That(provideResponseAsync.StatusCode).IsEqualTo(200);
- Check.That(provideResponseAsync.BodyData.BodyAsString).Contains(fileContents);
+ Check.That(response.Message.StatusCode).IsEqualTo(200);
+ Check.That(response.Message.BodyData.BodyAsString).Contains(fileContents);
}
[Fact]
@@ -301,12 +301,12 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request1 = new RequestMessage(new UrlDetails("http://localhost/__admin/files/filename.txt"), "GET", ClientIp, bodyDataAsFile);
- var response = Response.Create().WithStatusCode(200).WithBody(fileContents);
+ var responseBuilder = Response.Create().WithStatusCode(200).WithBody(fileContents);
- var provideResponseAsync = await response.ProvideResponseAsync(request1, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request1, _settings);
- Check.That(provideResponseAsync.StatusCode).IsEqualTo(200);
- Check.That(provideResponseAsync.BodyData.BodyAsString).Contains(fileContents);
+ Check.That(response.Message.StatusCode).IsEqualTo(200);
+ Check.That(response.Message.BodyData.BodyAsString).Contains(fileContents);
}
[Fact]
@@ -317,12 +317,12 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request1 = new RequestMessage(new UrlDetails("http://localhost/__admin/files/filename.txt"), "DELETE", ClientIp, bodyDataAsFile);
- var response = Response.Create().WithStatusCode(200).WithBody("File deleted.");
+ var responseBuilder = Response.Create().WithStatusCode(200).WithBody("File deleted.");
- var provideResponseAsync = await response.ProvideResponseAsync(request1, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request1, _settings);
- Check.That(provideResponseAsync.StatusCode).IsEqualTo(200);
- Check.That(provideResponseAsync.BodyData.BodyAsString).Contains("File deleted.");
+ Check.That(response.Message.StatusCode).IsEqualTo(200);
+ Check.That(response.Message.BodyData.BodyAsString).Contains("File deleted.");
}
}
}
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs
index 84607830..d4bc5793 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs
@@ -33,7 +33,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
// Assign
var requestMessage = new RequestMessage(new UrlDetails("http://localhost/foo"), "GET", "::1");
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithCallback(async request =>
{
await Task.Delay(1);
@@ -50,11 +50,11 @@ namespace WireMock.Net.Tests.ResponseBuilders
});
// Act
- var responseMessage = await response.ProvideResponseAsync(requestMessage, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(requestMessage, _settings);
// Assert
- responseMessage.BodyData.BodyAsString.Should().Be("/fooBar");
- responseMessage.StatusCode.Should().Be(302);
+ response.Message.BodyData.BodyAsString.Should().Be("/fooBar");
+ response.Message.StatusCode.Should().Be(302);
}
[Fact]
@@ -62,7 +62,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
// Assign
var requestMessage = new RequestMessage(new UrlDetails("http://localhost/foo"), "GET", "::1");
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithCallback(request => new ResponseMessage
{
BodyData = new BodyData
@@ -74,11 +74,11 @@ namespace WireMock.Net.Tests.ResponseBuilders
});
// Act
- var responseMessage = await response.ProvideResponseAsync(requestMessage, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(requestMessage, _settings);
// Assert
- responseMessage.BodyData.BodyAsString.Should().Be("/fooBar");
- responseMessage.StatusCode.Should().Be(302);
+ response.Message.BodyData.BodyAsString.Should().Be("/fooBar");
+ response.Message.StatusCode.Should().Be(302);
}
[Fact]
@@ -87,7 +87,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var header = "X-UserId";
var requestMessage = new RequestMessage(new UrlDetails("http://localhost/foo"), "GET", "::1");
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithCallback(request => new ResponseMessage
{
BodyData = new BodyData
@@ -105,12 +105,12 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithHeader(header, "Stef");
// Act
- var responseMessage = await response.ProvideResponseAsync(requestMessage, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(requestMessage, _settings);
// Assert
- responseMessage.BodyData.BodyAsString.Should().Be("/fooBar");
- responseMessage.StatusCode.Should().Be(HttpStatusCode.Accepted);
- responseMessage.Headers[header].Should().ContainSingle("Stef");
+ response.Message.BodyData.BodyAsString.Should().Be("/fooBar");
+ response.Message.StatusCode.Should().Be(HttpStatusCode.Accepted);
+ response.Message.Headers[header].Should().ContainSingle("Stef");
}
[Fact]
@@ -118,7 +118,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
// Assign
var requestMessage = new RequestMessage(new UrlDetails("http://localhost/foo"), "GET", "::1");
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithCallback(request => new ResponseMessage
{
BodyData = new BodyData
@@ -131,11 +131,11 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(requestMessage, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(requestMessage, _settings);
// Assert
- responseMessage.BodyData.BodyAsString.Should().Be("/fooBar");
- responseMessage.StatusCode.Should().Be(302);
+ response.Message.BodyData.BodyAsString.Should().Be("/fooBar");
+ response.Message.StatusCode.Should().Be(302);
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithFaultTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithFaultTests.cs
index d4311fed..378f4d1d 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithFaultTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithFaultTests.cs
@@ -21,12 +21,12 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost/fault"), "GET", ClientIp);
// Act
- var response = Response.Create().WithFault(faultType);
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var responseBuilder = Response.Create().WithFault(faultType);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- responseMessage.FaultType.Should().Be(faultType);
- responseMessage.FaultPercentage.Should().BeNull();
+ response.Message.FaultType.Should().Be(faultType);
+ response.Message.FaultPercentage.Should().BeNull();
}
[Theory]
@@ -37,12 +37,12 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost/fault"), "GET", ClientIp);
// Act
- var response = Response.Create().WithFault(faultType, percentage);
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var responseBuilder = Response.Create().WithFault(faultType, percentage);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- responseMessage.FaultType.Should().Be(faultType);
- responseMessage.FaultPercentage.Should().Be(percentage);
+ response.Message.FaultType.Should().Be(faultType);
+ response.Message.FaultPercentage.Should().Be(percentage);
}
}
}
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsFileTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsFileTests.cs
index 533d5e86..a0e8428e 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsFileTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsFileTests.cs
@@ -1,100 +1,99 @@
-using System;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
using HandlebarsDotNet;
-using Moq;
-using Newtonsoft.Json.Linq;
-using NFluent;
-using WireMock.Handlers;
-using WireMock.Models;
-using WireMock.ResponseBuilders;
-using WireMock.Settings;
-using Xunit;
-
-namespace WireMock.Net.Tests.ResponseBuilders
-{
- public class ResponseWithHandlebarsFileTests
- {
- private readonly Mock _filesystemHandlerMock;
- private readonly WireMockServerSettings _settings = new WireMockServerSettings();
- private const string ClientIp = "::1";
-
- public ResponseWithHandlebarsFileTests()
- {
- _filesystemHandlerMock = new Mock(MockBehavior.Strict);
- _filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny())).Returns("abc");
-
- _settings.FileSystemHandler = _filesystemHandlerMock.Object;
- }
-
- [Fact]
- public async Task Response_ProvideResponseAsync_Handlebars_File()
- {
- // Assign
- var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
-
- var response = Response.Create()
- .WithBodyAsJson(new
- {
- Data = "{{File \"x.json\"}}"
- })
- .WithTransformer();
-
- // Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
-
- // Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
- Check.That(j["Data"].Value()).Equals("abc");
-
- // Verify
- _filesystemHandlerMock.Verify(fs => fs.ReadResponseBodyAsString("x.json"), Times.Once);
- _filesystemHandlerMock.VerifyNoOtherCalls();
- }
-
- [Fact]
- public async Task Response_ProvideResponseAsync_Handlebars_File_Replace()
- {
- // Assign
- var request = new RequestMessage(new UrlDetails("http://localhost:1234?id=x"), "GET", ClientIp);
-
- var response = Response.Create()
- .WithBodyAsJson(new
- {
- Data = "{{File \"{{request.query.id}}.json\"}}"
- })
- .WithTransformer();
-
- // Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
-
- // Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
- Check.That(j["Data"].Value()).Equals("abc");
-
- // Verify
- _filesystemHandlerMock.Verify(fs => fs.ReadResponseBodyAsString("x.json"), Times.Once);
- _filesystemHandlerMock.VerifyNoOtherCalls();
- }
-
- [Fact]
- public void Response_ProvideResponseAsync_Handlebars_File_WithMissingArgument_Throws_HandlebarsException()
- {
- // Assign
- var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
-
- var response = Response.Create()
- .WithBodyAsJson(new
- {
- Data = "{{File}}"
- })
- .WithTransformer();
-
- // Act
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settings)).Throws();
-
- // Verify
- _filesystemHandlerMock.Verify(fs => fs.ReadResponseBodyAsString(It.IsAny()), Times.Never);
- _filesystemHandlerMock.VerifyNoOtherCalls();
- }
- }
+using Moq;
+using Newtonsoft.Json.Linq;
+using NFluent;
+using WireMock.Handlers;
+using WireMock.Models;
+using WireMock.ResponseBuilders;
+using WireMock.Settings;
+using Xunit;
+
+namespace WireMock.Net.Tests.ResponseBuilders
+{
+ public class ResponseWithHandlebarsFileTests
+ {
+ private readonly Mock _filesystemHandlerMock;
+ private readonly WireMockServerSettings _settings = new WireMockServerSettings();
+ private const string ClientIp = "::1";
+
+ public ResponseWithHandlebarsFileTests()
+ {
+ _filesystemHandlerMock = new Mock(MockBehavior.Strict);
+ _filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny())).Returns("abc");
+
+ _settings.FileSystemHandler = _filesystemHandlerMock.Object;
+ }
+
+ [Fact]
+ public async Task Response_ProvideResponseAsync_Handlebars_File()
+ {
+ // Assign
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
+
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(new
+ {
+ Data = "{{File \"x.json\"}}"
+ })
+ .WithTransformer();
+
+ // Act
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
+
+ // Assert
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
+ Check.That(j["Data"].Value()).Equals("abc");
+
+ // Verify
+ _filesystemHandlerMock.Verify(fs => fs.ReadResponseBodyAsString("x.json"), Times.Once);
+ _filesystemHandlerMock.VerifyNoOtherCalls();
+ }
+
+ [Fact]
+ public async Task Response_ProvideResponseAsync_Handlebars_File_Replace()
+ {
+ // Assign
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234?id=x"), "GET", ClientIp);
+
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(new
+ {
+ Data = "{{File \"{{request.query.id}}.json\"}}"
+ })
+ .WithTransformer();
+
+ // Act
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
+
+ // Assert
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
+ Check.That(j["Data"].Value()).Equals("abc");
+
+ // Verify
+ _filesystemHandlerMock.Verify(fs => fs.ReadResponseBodyAsString("x.json"), Times.Once);
+ _filesystemHandlerMock.VerifyNoOtherCalls();
+ }
+
+ [Fact]
+ public void Response_ProvideResponseAsync_Handlebars_File_WithMissingArgument_Throws_HandlebarsException()
+ {
+ // Assign
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
+
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(new
+ {
+ Data = "{{File}}"
+ })
+ .WithTransformer();
+
+ // Act
+ Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws();
+
+ // Verify
+ _filesystemHandlerMock.Verify(fs => fs.ReadResponseBodyAsString(It.IsAny()), Times.Never);
+ _filesystemHandlerMock.VerifyNoOtherCalls();
+ }
+ }
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsHelpersTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsHelpersTests.cs
index 6b8d08fc..fc222296 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsHelpersTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsHelpersTests.cs
@@ -34,15 +34,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{String.Uppercase request.body}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("ABC");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("ABC");
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsJsonPathTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsJsonPathTests.cs
index 6091d155..c71768f3 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsJsonPathTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsJsonPathTests.cs
@@ -71,16 +71,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/json")
.WithBodyAsJson(new { x = "{{JsonPath.SelectToken request.body \"$.Manufacturers[?(@.Name == 'Acme Co')]\"}}" })
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
Check.That(j["x"]).IsNotNull();
Check.That(j["x"]["Name"].ToString()).Equals("Acme Co");
}
@@ -97,16 +97,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/json")
.WithBodyAsJson(new { x = "{{JsonPath.SelectToken request.body \"..Price\"}}" })
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
Check.That(j["x"].Value()).Equals(99);
}
@@ -151,16 +151,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/json")
.WithBody("{{JsonPath.SelectToken request.body \"$.Manufacturers[?(@.Name == 'Acme Co')]\"}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.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}}}");
}
[Fact]
@@ -204,16 +204,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/json")
.WithBody("{{JsonPath.SelectToken request.bodyAsJson \"$.Manufacturers[?(@.Name == 'Acme Co')]\"}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.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}}}");
}
[Fact]
@@ -257,16 +257,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/json")
.WithBody("{{#JsonPath.SelectTokens request.body \"$..Products[?(@.Price >= 50)].Name\"}}{{#each this}}%{{@index}}:{{this}}%{{/each}}{{/JsonPath.SelectTokens}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%");
}
[Fact]
@@ -310,16 +310,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/json")
.WithBody("{{#JsonPath.SelectTokens request.bodyAsJson \"$..Products[?(@.Price >= 50)].Name\"}}{{#each this}}%{{@index}}:{{this}}%{{/each}}{{/JsonPath.SelectTokens}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%");
}
[Fact]
@@ -339,13 +339,13 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/json")
.WithBody("{{#JsonPath.SelectTokens request.body \"$..Products[?(@.Price >= 50)].Name\"}}{{id}} {{value}},{{/JsonPath.SelectTokens}}")
.WithTransformer();
// Act
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settings)).Throws();
+ Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws();
}
[Fact]
@@ -364,15 +364,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, bodyData);
string jsonPath = "\"$.MyUniqueNumber\"";
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithTransformer()
.WithBodyFromFile(@"c:\\{{JsonPath.SelectToken request.body " + jsonPath + "}}\\test.json"); // why use a \\ here ?
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsFile).Equals(@"c:\1\test.json");
+ Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.json");
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsLinqTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsLinqTests.cs
index 36f1c39d..6fc457a5 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsLinqTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsLinqTests.cs
@@ -1,249 +1,249 @@
-using System;
-using System.Threading.Tasks;
+using System;
+using System.Threading.Tasks;
using FluentAssertions;
using HandlebarsDotNet;
-using Moq;
-using Newtonsoft.Json.Linq;
-using NFluent;
-using WireMock.Handlers;
-using WireMock.Models;
-using WireMock.ResponseBuilders;
-using WireMock.Settings;
-using WireMock.Types;
-using WireMock.Util;
-using Xunit;
-
-namespace WireMock.Net.Tests.ResponseBuilders
-{
- public class ResponseWithHandlebarsLinqTests
- {
- private readonly Mock _filesystemHandlerMock;
- private readonly WireMockServerSettings _settings = new WireMockServerSettings();
-
- public ResponseWithHandlebarsLinqTests()
- {
- _filesystemHandlerMock = new Mock(MockBehavior.Strict);
- _filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny())).Returns("abc");
-
- _settings.FileSystemHandler = _filesystemHandlerMock.Object;
- }
-
- [Fact]
- public async Task Response_ProvideResponse_Handlebars_Linq1_String0()
- {
- // Assign
- var body = new BodyData();
-
- var request = new RequestMessage(new UrlDetails("http://localhost:1234/pathtest"), "POST", "::1", body);
-
- var response = Response.Create()
- .WithHeader("Content-Type", "application/json")
- .WithBodyAsJson(new { x = "{{Linq request.Path 'it'}}" })
- .WithTransformer();
-
- // Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
-
- // Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
- Check.That(j["x"]).IsNotNull();
- Check.That(j["x"].ToString()).Equals("/pathtest");
- }
-
- [Fact]
- public async Task Response_ProvideResponse_Handlebars_Linq1_String1()
- {
- // Assign
- var body = new BodyData
- {
- BodyAsJson = new JObject
- {
- { "Id", new JValue(9) },
- { "Name", new JValue("Test") }
- },
- DetectedBodyType = BodyType.Json
- };
-
- var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
-
- var response = Response.Create()
- .WithHeader("Content-Type", "application/json")
- .WithBodyAsJson(new { x = "{{Linq request.bodyAsJson 'it.Name + \"_123\"' }}" })
- .WithTransformer();
-
- // Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
-
- // Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
- Check.That(j["x"]).IsNotNull();
- Check.That(j["x"].ToString()).Equals("Test_123");
- }
-
- [Fact]
- public async Task Response_ProvideResponse_Handlebars_Linq1_String2()
- {
- // Assign
- var body = new BodyData
- {
- BodyAsJson = new JObject
- {
- { "Id", new JValue(9) },
- { "Name", new JValue("Test") }
- },
- DetectedBodyType = BodyType.Json
- };
-
- var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
-
- var response = Response.Create()
- .WithHeader("Content-Type", "application/json")
- .WithBodyAsJson(new { x = "{{Linq request.bodyAsJson 'new(it.Name + \"_123\" as N, it.Id as I)' }}" })
- .WithTransformer();
-
- // Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
-
- // Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
- Check.That(j["x"]).IsNotNull();
- Check.That(j["x"].ToString()).Equals("{ N = Test_123, I = 9 }");
- }
-
- [Fact]
- public async Task Response_ProvideResponse_Handlebars_Linq2_Object()
- {
- // Assign
- var body = new BodyData
- {
- BodyAsJson = new JObject
- {
- { "Id", new JValue(9) },
- { "Name", new JValue("Test") }
- },
- DetectedBodyType = BodyType.Json
- };
-
- var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
-
- var response = Response.Create()
- .WithHeader("Content-Type", "application/json")
- .WithBodyAsJson(new { x = "{{#Linq request.bodyAsJson 'new(it.Name + \"_123\" as N, it.Id as I)' }}{{this}}{{/Linq}}" })
- .WithTransformer();
-
- // Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
-
- // Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
- Check.That(j["x"]).IsNotNull();
- Check.That(j["x"].ToString()).Equals("{ N = Test_123, I = 9 }");
- }
-
- [Fact]
- public void Response_ProvideResponse_Handlebars_Linq_Throws_ArgumentException()
- {
- // Assign
- var body = new BodyData
- {
- BodyAsJson = new { x = "x" },
- DetectedBodyType = BodyType.Json
- };
-
- var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
-
- var response = Response.Create()
- .WithBodyAsJson(new { x = "{{Linq request.bodyAsJson 1}}" })
- .WithTransformer();
-
- // Act
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settings)).Throws();
- }
-
- [Fact]
- public void Response_ProvideResponse_Handlebars_Linq1_Throws_ArgumentNullException()
- {
- // Assign
- var body = new BodyData();
-
- var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
-
- var response = Response.Create()
- .WithBodyAsJson(new { x = "{{Linq request.body 'Name'}}" })
- .WithTransformer();
-
- // Act
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settings)).Throws();
- }
-
- [Fact]
- public void Response_ProvideResponse_Handlebars_Linq1_Throws_HandlebarsException()
- {
- // Assign
- var body = new BodyData();
-
- var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
-
- var response = Response.Create()
- .WithBodyAsJson(new { x = "{{Linq request.bodyAsJson}} ''" })
- .WithTransformer();
-
- // Act
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settings)).Throws();
- }
-
- [Fact]
- public void Response_ProvideResponse_Handlebars_Linq1_ParseError_Throws_ExceptionMessage()
- {
- // Assign
- var body = new BodyData
- {
- BodyAsJson = new JObject
- {
- { "Id", new JValue(9) },
- { "Name", new JValue("Test") }
- },
- DetectedBodyType = BodyType.Json
- };
-
- var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
-
- var response = Response.Create()
- .WithBodyAsJson(new { x = "{{Linq request.bodyAsJson '---' }}" })
- .WithTransformer();
-
- // Act
- Func a = async () => await response.ProvideResponseAsync(request, _settings);
-
- // Assert
- a.Should().Throw();
- }
-
- [Fact]
- public void Response_ProvideResponse_Handlebars_Linq2_ParseError_Throws_ExceptionMessage()
- {
- // Assign
- var body = new BodyData
- {
- BodyAsJson = new JObject
- {
- { "Id", new JValue(9) },
- { "Name", new JValue("Test") }
- },
- DetectedBodyType = BodyType.Json
- };
-
- var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
-
- var response = Response.Create()
- .WithBodyAsJson(new { x = "{{#Linq request.bodyAsJson '---' }}{{this}}{{/Linq}}" })
- .WithTransformer();
-
- // Act
- Func a = async () => await response.ProvideResponseAsync(request, _settings);
-
- // Assert
- a.Should().Throw();
- }
- }
+using Moq;
+using Newtonsoft.Json.Linq;
+using NFluent;
+using WireMock.Handlers;
+using WireMock.Models;
+using WireMock.ResponseBuilders;
+using WireMock.Settings;
+using WireMock.Types;
+using WireMock.Util;
+using Xunit;
+
+namespace WireMock.Net.Tests.ResponseBuilders
+{
+ public class ResponseWithHandlebarsLinqTests
+ {
+ private readonly Mock _filesystemHandlerMock;
+ private readonly WireMockServerSettings _settings = new WireMockServerSettings();
+
+ public ResponseWithHandlebarsLinqTests()
+ {
+ _filesystemHandlerMock = new Mock(MockBehavior.Strict);
+ _filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny())).Returns("abc");
+
+ _settings.FileSystemHandler = _filesystemHandlerMock.Object;
+ }
+
+ [Fact]
+ public async Task Response_ProvideResponse_Handlebars_Linq1_String0()
+ {
+ // Assign
+ var body = new BodyData();
+
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234/pathtest"), "POST", "::1", body);
+
+ var responseBuilder = Response.Create()
+ .WithHeader("Content-Type", "application/json")
+ .WithBodyAsJson(new { x = "{{Linq request.Path 'it'}}" })
+ .WithTransformer();
+
+ // Act
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
+
+ // Assert
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
+ Check.That(j["x"]).IsNotNull();
+ Check.That(j["x"].ToString()).Equals("/pathtest");
+ }
+
+ [Fact]
+ public async Task Response_ProvideResponse_Handlebars_Linq1_String1()
+ {
+ // Assign
+ var body = new BodyData
+ {
+ BodyAsJson = new JObject
+ {
+ { "Id", new JValue(9) },
+ { "Name", new JValue("Test") }
+ },
+ DetectedBodyType = BodyType.Json
+ };
+
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
+
+ var responseBuilder = Response.Create()
+ .WithHeader("Content-Type", "application/json")
+ .WithBodyAsJson(new { x = "{{Linq request.bodyAsJson 'it.Name + \"_123\"' }}" })
+ .WithTransformer();
+
+ // Act
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
+
+ // Assert
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
+ Check.That(j["x"]).IsNotNull();
+ Check.That(j["x"].ToString()).Equals("Test_123");
+ }
+
+ [Fact]
+ public async Task Response_ProvideResponse_Handlebars_Linq1_String2()
+ {
+ // Assign
+ var body = new BodyData
+ {
+ BodyAsJson = new JObject
+ {
+ { "Id", new JValue(9) },
+ { "Name", new JValue("Test") }
+ },
+ DetectedBodyType = BodyType.Json
+ };
+
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
+
+ var responseBuilder = Response.Create()
+ .WithHeader("Content-Type", "application/json")
+ .WithBodyAsJson(new { x = "{{Linq request.bodyAsJson 'new(it.Name + \"_123\" as N, it.Id as I)' }}" })
+ .WithTransformer();
+
+ // Act
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
+
+ // Assert
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
+ Check.That(j["x"]).IsNotNull();
+ Check.That(j["x"].ToString()).Equals("{ N = Test_123, I = 9 }");
+ }
+
+ [Fact]
+ public async Task Response_ProvideResponse_Handlebars_Linq2_Object()
+ {
+ // Assign
+ var body = new BodyData
+ {
+ BodyAsJson = new JObject
+ {
+ { "Id", new JValue(9) },
+ { "Name", new JValue("Test") }
+ },
+ DetectedBodyType = BodyType.Json
+ };
+
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
+
+ var responseBuilder = Response.Create()
+ .WithHeader("Content-Type", "application/json")
+ .WithBodyAsJson(new { x = "{{#Linq request.bodyAsJson 'new(it.Name + \"_123\" as N, it.Id as I)' }}{{this}}{{/Linq}}" })
+ .WithTransformer();
+
+ // Act
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
+
+ // Assert
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
+ Check.That(j["x"]).IsNotNull();
+ Check.That(j["x"].ToString()).Equals("{ N = Test_123, I = 9 }");
+ }
+
+ [Fact]
+ public void Response_ProvideResponse_Handlebars_Linq_Throws_ArgumentException()
+ {
+ // Assign
+ var body = new BodyData
+ {
+ BodyAsJson = new { x = "x" },
+ DetectedBodyType = BodyType.Json
+ };
+
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
+
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(new { x = "{{Linq request.bodyAsJson 1}}" })
+ .WithTransformer();
+
+ // Act
+ Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws();
+ }
+
+ [Fact]
+ public void Response_ProvideResponse_Handlebars_Linq1_Throws_ArgumentNullException()
+ {
+ // Assign
+ var body = new BodyData();
+
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
+
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(new { x = "{{Linq request.body 'Name'}}" })
+ .WithTransformer();
+
+ // Act
+ Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws();
+ }
+
+ [Fact]
+ public void Response_ProvideResponse_Handlebars_Linq1_Throws_HandlebarsException()
+ {
+ // Assign
+ var body = new BodyData();
+
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
+
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(new { x = "{{Linq request.bodyAsJson}} ''" })
+ .WithTransformer();
+
+ // Act
+ Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws();
+ }
+
+ [Fact]
+ public void Response_ProvideResponse_Handlebars_Linq1_ParseError_Throws_ExceptionMessage()
+ {
+ // Assign
+ var body = new BodyData
+ {
+ BodyAsJson = new JObject
+ {
+ { "Id", new JValue(9) },
+ { "Name", new JValue("Test") }
+ },
+ DetectedBodyType = BodyType.Json
+ };
+
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
+
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(new { x = "{{Linq request.bodyAsJson '---' }}" })
+ .WithTransformer();
+
+ // Act
+ Func a = async () => await responseBuilder.ProvideResponseAsync(request, _settings);
+
+ // Assert
+ a.Should().Throw();
+ }
+
+ [Fact]
+ public void Response_ProvideResponse_Handlebars_Linq2_ParseError_Throws_ExceptionMessage()
+ {
+ // Assign
+ var body = new BodyData
+ {
+ BodyAsJson = new JObject
+ {
+ { "Id", new JValue(9) },
+ { "Name", new JValue("Test") }
+ },
+ DetectedBodyType = BodyType.Json
+ };
+
+ var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
+
+ var responseBuilder = Response.Create()
+ .WithBodyAsJson(new { x = "{{#Linq request.bodyAsJson '---' }}{{this}}{{/Linq}}" })
+ .WithTransformer();
+
+ // Act
+ Func a = async () => await responseBuilder.ProvideResponseAsync(request, _settings);
+
+ // Assert
+ a.Should().Throw();
+ }
+ }
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRandomTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRandomTests.cs
index 75d2d5f6..c14d0bf2 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRandomTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRandomTests.cs
@@ -32,7 +32,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson(new
{
Text = "{{Random Type=\"Text\" Min=8 Max=20}}",
@@ -43,10 +43,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
Check.That(j["Text"].Value()).IsNotEmpty();
Check.That(j["Integer"].Value()).IsEqualTo(1000);
Check.That(j["Long"].Value()).IsStrictlyGreaterThan(77777777).And.IsStrictlyLessThan(99999999);
@@ -58,7 +58,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson(new
{
Value = "{{Random Type=\"Boolean\"}}"
@@ -66,10 +66,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
Check.That(j["Value"].Type).IsEqualTo(JTokenType.Boolean);
}
@@ -79,7 +79,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson(new
{
Guid1 = "{{Random Type=\"Guid\" Uppercase=false}}",
@@ -88,10 +88,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
string guid1 = j["Guid1"].Value();
Check.That(guid1.ToUpper()).IsNotEqualTo(guid1);
string guid2 = j["Guid2"].Value();
@@ -104,7 +104,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson(new
{
StringValue = "{{Random Type=\"StringList\" Values=[\"a\", \"b\", \"c\"]}}"
@@ -112,10 +112,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
string value = j["StringValue"].Value();
Check.That(new[] { "a", "b", "c" }.Contains(value)).IsTrue();
}
@@ -126,7 +126,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson(new
{
Integer = "{{#Random Type=\"Integer\" Min=10000000 Max=99999999}}{{this}}{{/Random}}",
@@ -134,10 +134,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
Check.That(j["Integer"].Value()).IsStrictlyGreaterThan(10000000).And.IsStrictlyLessThan(99999999);
}
}
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRegexTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRegexTests.cs
index 2a8ae6c9..529f6ca4 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRegexTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRegexTests.cs
@@ -35,15 +35,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{Regex.Match request.body \"^(\\w+)$\"}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("abc");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("abc");
}
[Fact]
@@ -54,15 +54,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{Regex.Match request.body \"^?0$\"}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("");
}
[Fact]
@@ -73,15 +73,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{Regex.Match request.body \"^?0$\" \"d\"}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("d");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("d");
}
[Fact]
@@ -92,15 +92,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{#Regex.Match request.body \"^(?\\w+)://[^/]+?(?\\d+)/?\"}}{{this.port}}-{{this.proto}}{{/Regex.Match}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("5000-https");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("5000-https");
}
[Fact]
@@ -111,15 +111,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{#Regex.Match request.body \"^(?\\w+)://[^/]+?(?\\d+)/?\"}}{{this}}{{/Regex.Match}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("");
}
[Fact]
@@ -130,15 +130,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{#Regex.Match request.body \"^(?\\w+)://[^/]+?(?\\d+)/?\" \"x\"}}{{this}}{{/Regex.Match}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("x");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("x");
}
[Fact]
@@ -149,12 +149,12 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{#Regex.Match request.bodyAsJson \"^(?\\w+)://[^/]+?(?\\d+)/?\"}}{{/Regex.Match}}")
.WithTransformer();
// Act and Assert
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settings)).Throws();
+ Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws();
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXPathTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXPathTests.cs
index 48baf5f9..894d61b0 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXPathTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXPathTests.cs
@@ -46,16 +46,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/xml")
.WithBody("{{XPath.SelectSingleNode request.body \"/todo-list/todo-item[1]\"}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- var nav = new XmlDocument { InnerXml = responseMessage.BodyData.BodyAsString }.CreateNavigator();
+ var nav = new XmlDocument { InnerXml = response.Message.BodyData.BodyAsString }.CreateNavigator();
var node = nav.XPath2SelectSingleNode("/response/todo-item");
Check.That(node.Value).Equals("abc");
Check.That(node.GetAttribute("id", "")).Equals("a1");
@@ -77,16 +77,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/xml")
.WithBody("{{XPath.SelectSingleNode request.body \"/todo-list/todo-item[1]/text()\"}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo("abc");
+ Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("abc");
}
[Fact]
@@ -105,16 +105,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/xml")
.WithBody("{{XPath.SelectNodes request.body \"/todo-list/todo-item\"}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- var nav = new XmlDocument { InnerXml = responseMessage.BodyData.BodyAsString }.CreateNavigator();
+ var nav = new XmlDocument { InnerXml = response.Message.BodyData.BodyAsString }.CreateNavigator();
var nodes = nav.XPath2SelectNodes("/response/todo-item");
Check.That(nodes.Count + 1).IsEqualTo(3);
}
@@ -135,16 +135,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/xml")
.WithBody("{{XPath.Evaluate request.body \"boolean(/todo-list[count(todo-item) = 3])\"}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).IsEqualIgnoringCase("True");
+ Check.That(response.Message.BodyData.BodyAsString).IsEqualIgnoringCase("True");
}
[Fact]
@@ -163,16 +163,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithHeader("Content-Type", "application/xml")
.WithBody("{{XPath.Evaluate request.body \"string(/todo-list/todo-item[1]/@id)\"}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo("a1");
+ Check.That(response.Message.BodyData.BodyAsString).IsEqualTo("a1");
}
}
}
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXegerTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXegerTests.cs
index 31fc805a..c0a87f7c 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXegerTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXegerTests.cs
@@ -31,7 +31,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson(new
{
Number = "{{Xeger.Generate \"[1-9]{1}\\d{3}\"}}",
@@ -40,10 +40,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
Check.That(j["Number"].Value()).IsStrictlyGreaterThan(1000).And.IsStrictlyLessThan(9999);
Check.That(j["Postcode"].Value()).IsNotEmpty();
}
@@ -54,7 +54,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson(new
{
Number = "{{#Xeger.Generate \"[1-9]{1}\\d{3}\"}}{{this}}{{/Xeger.Generate}}",
@@ -63,10 +63,10 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
+ JObject j = JObject.FromObject(response.Message.BodyData.BodyAsJson);
Check.That(j["Number"].Value()).IsStrictlyGreaterThan(1000).And.IsStrictlyLessThan(9999);
Check.That(j["Postcode"].Value()).IsNotEmpty();
}
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHeadersTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHeadersTests.cs
index 217eb325..87120b0c 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHeadersTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHeadersTests.cs
@@ -28,7 +28,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = await builder.ProvideResponseAsync(requestMock, _settings);
// Assert
- Check.That(response.Headers[headerName].ToString()).Equals(headerValue);
+ Check.That(response.Message.Headers[headerName].ToString()).Equals(headerValue);
}
[Theory]
@@ -44,7 +44,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = await builder.ProvideResponseAsync(requestMock, _settings);
// Assert
- Check.That(response.Headers[headerName].ToArray()).Equals(headerValues);
+ Check.That(response.Message.Headers[headerName].ToArray()).Equals(headerValues);
}
[Fact]
@@ -59,7 +59,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var responseMessage = await response.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.Headers["h"]).ContainsExactly("x");
+ Check.That(responseMessage.Message.Headers["h"]).ContainsExactly("x");
}
[Fact]
@@ -68,13 +68,13 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost"), "GET", ClientIp);
var headers = new Dictionary { { "h", new[] { "x" } } };
- var response = Response.Create().WithHeaders(headers);
+ var responseBuilder = Response.Create().WithHeaders(headers);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.Headers["h"]).ContainsExactly("x");
+ Check.That(response.Message.Headers["h"]).ContainsExactly("x");
}
[Fact]
@@ -83,13 +83,13 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost"), "GET", ClientIp);
var headers = new Dictionary> { { "h", new WireMockList("x") } };
- var response = Response.Create().WithHeaders(headers);
+ var builder = Response.Create().WithHeaders(headers);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await builder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.Headers["h"]).ContainsExactly("x");
+ Check.That(response.Message.Headers["h"]).ContainsExactly("x");
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithProxyTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithProxyTests.cs
index 14f357f1..eb948942 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithProxyTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithProxyTests.cs
@@ -46,16 +46,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var headers = new Dictionary { { "Content-Type", new[] { "application/xml" } } };
var request = new RequestMessage(new UrlDetails($"{_server.Urls[0]}{prepend}/{_guid}{append}"), "POST", ClientIp, new BodyData { DetectedBodyType = BodyType.Json, BodyAsJson = new { a = 1 } }, headers);
- var response = Response.Create().WithProxy(_server.Urls[0]);
+ var responseBuilder = Response.Create().WithProxy(_server.Urls[0]);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
Check.That(request.ProxyUrl).IsNotNull();
- Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo(expectedBody);
- Check.That(responseMessage.StatusCode).IsEqualTo(201);
- Check.That(responseMessage.Headers["Content-Type"].ToString()).IsEqualTo("application/json");
+ Check.That(response.Message.BodyData.BodyAsString).IsEqualTo(expectedBody);
+ Check.That(response.Message.StatusCode).IsEqualTo(201);
+ Check.That(response.Message.Headers["Content-Type"].ToString()).IsEqualTo("application/json");
}
[Fact]
@@ -72,12 +72,12 @@ namespace WireMock.Net.Tests.ResponseBuilders
Password = "y"
}
};
- var response = Response.Create().WithProxy(settings);
+ var responseBuilder = Response.Create().WithProxy(settings);
// Act
var request = new RequestMessage(new UrlDetails($"{_server.Urls[0]}/{_guid}"), "GET", ClientIp);
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settings)).Throws();
+ Check.ThatAsyncCode(() => responseBuilder.ProvideResponseAsync(request, _settings)).Throws();
}
public void Dispose()
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithScribanTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithScribanTests.cs
index e0e8f680..c72e58df 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithScribanTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithScribanTests.cs
@@ -40,13 +40,13 @@ namespace WireMock.Net.Tests.ResponseBuilders
var urlDetails = UrlUtils.Parse(new Uri("http://localhost/wiremock/a/b"), new PathString("/wiremock"));
var request = new RequestMessage(urlDetails, "GET", ClientIp);
- var response = Response.Create().WithTransformer(TransformerType.ScribanDotLiquid);
+ var responseBuilder = Response.Create().WithTransformer(TransformerType.ScribanDotLiquid);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- responseMessage.BodyData.Should().BeNull();
+ response.Message.BodyData.Should().BeNull();
}
[Fact]
@@ -60,15 +60,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POSt", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("test {{request.Url}} {{request.Path}} {{request.Method}}")
.WithTransformer(TransformerType.Scriban);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt");
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithStatusCodeTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithStatusCodeTests.cs
index 8535ba7c..dc14c951 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithStatusCodeTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithStatusCodeTests.cs
@@ -24,26 +24,26 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost/fault"), "GET", ClientIp);
// Act
- var response = Response.Create();
+ var responseBuilder = Response.Create();
switch (statusCode)
{
case string statusCodeAsString:
- response = response.WithStatusCode(statusCodeAsString);
+ responseBuilder = responseBuilder.WithStatusCode(statusCodeAsString);
break;
case int statusCodeAInteger:
- response = response.WithStatusCode(statusCodeAInteger);
+ responseBuilder = responseBuilder.WithStatusCode(statusCodeAInteger);
break;
case HttpStatusCode statusCodeAsEnum:
- response = response.WithStatusCode(statusCodeAsEnum);
+ responseBuilder = responseBuilder.WithStatusCode(statusCodeAsEnum);
break;
}
- var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
- responseMessage.StatusCode.Should().Be(expectedStatusCode);
+ response.Message.StatusCode.Should().Be(expectedStatusCode);
}
}
}
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs
index e3aeec50..61bea898 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithTransformerTests.cs
@@ -46,13 +46,13 @@ namespace WireMock.Net.Tests.ResponseBuilders
var urlDetails = UrlUtils.Parse(new Uri("http://localhost/wiremock/a/b"), new PathString("/wiremock"));
var request = new RequestMessage(urlDetails, "GET", ClientIp);
- var response = Response.Create().WithTransformer(transformerType);
+ var responseBuilder = Response.Create().WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- responseMessage.BodyData.Should().BeNull();
+ response.Message.BodyData.Should().BeNull();
}
[Theory]
@@ -69,15 +69,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POSt", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("test {{request.Url}} {{request.Path}} {{request.Method}}")
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt");
}
[Theory]
@@ -93,15 +93,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var urlDetails = UrlUtils.Parse(new Uri("http://localhost/wiremock/a/b"), new PathString("/wiremock"));
var request = new RequestMessage(urlDetails, httpMethod, ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("url={{request.Url}} absoluteurl={{request.AbsoluteUrl}} path={{request.Path}} absolutepath={{request.AbsolutePath}}")
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.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");
}
[Fact]
@@ -111,15 +111,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var urlDetails = UrlUtils.Parse(new Uri("http://localhost/wiremock/a/b"), new PathString("/wiremock"));
var request = new RequestMessage(urlDetails, "POST", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{request.PathSegments.[0]}} {{request.AbsolutePathSegments.[0]}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("a wiremock");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("a wiremock");
}
[Theory(Skip = "Invalid token `OpenBracket`")]
@@ -131,15 +131,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
var urlDetails = UrlUtils.Parse(new Uri("http://localhost/wiremock/a/b"), new PathString("/wiremock"));
var request = new RequestMessage(urlDetails, "POST", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{request.PathSegments.[0]}} {{request.AbsolutePathSegments.[0]}}")
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("a wiremock");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("a wiremock");
}
[Fact]
@@ -153,15 +153,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo?a=1&a=2&b=5"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("test keya={{request.query.a}} idx={{request.query.a.[0]}} idx={{request.query.a.[1]}} keyb={{request.query.b}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.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");
}
[Theory(Skip = "Invalid token `OpenBracket`")]
@@ -177,15 +177,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo?a=1&a=2&b=5"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("test keya={{request.query.a}} idx={{request.query.a.[0]}} idx={{request.query.a.[1]}} keyb={{request.query.b}}")
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.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");
}
[Fact]
@@ -199,17 +199,17 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo?a=400"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithStatusCode("{{request.query.a}}")
.WithBody("test")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
- Check.That(responseMessage.StatusCode).Equals("400");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("test");
+ Check.That(response.Message.StatusCode).Equals("400");
}
[Theory(Skip = "WireMockList is not supported by Scriban")]
@@ -225,17 +225,17 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo?a=400"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithStatusCode("{{request.Query.a}}")
.WithBody("test")
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
- Check.That(responseMessage.StatusCode).Equals("400");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("test");
+ Check.That(response.Message.StatusCode).Equals("400");
}
[Theory]
@@ -252,16 +252,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo?a=400"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("test")
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
- Check.That(responseMessage.StatusCode).Equals(null);
+ Check.That(response.Message.BodyData.BodyAsString).Equals("test");
+ Check.That(response.Message.StatusCode).Equals(null);
}
[Fact]
@@ -275,15 +275,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, body, new Dictionary { { "Content-Type", new[] { "text/plain" } } });
- var response = 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
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
- Check.That(responseMessage.Headers).ContainsKey("x");
- Check.That(responseMessage.Headers["x"]).ContainsExactly("text/plain");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("test");
+ Check.That(response.Message.Headers).ContainsKey("x");
+ Check.That(response.Message.Headers["x"]).ContainsExactly("text/plain");
}
[Fact]
@@ -297,16 +297,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, body, new Dictionary { { "Content-Type", new[] { "text/plain" } } });
- var response = 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
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
- Check.That(responseMessage.Headers).ContainsKey("x");
- Check.That(responseMessage.Headers["x"]).Contains("text/plain");
- Check.That(responseMessage.Headers["x"]).Contains("http://localhost/foo");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("test");
+ Check.That(response.Message.Headers).ContainsKey("x");
+ Check.That(response.Message.Headers["x"]).Contains("text/plain");
+ Check.That(response.Message.Headers["x"]).Contains("http://localhost/foo");
}
[Theory(Skip = "WireMockList is not supported by Scriban")]
@@ -322,16 +322,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo"), "POST", ClientIp, body, new Dictionary { { "Content-Type", new[] { "text/plain" } } });
- var response = 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
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
- Check.That(responseMessage.Headers).ContainsKey("x");
- Check.That(responseMessage.Headers["x"]).Contains("text/plain");
- Check.That(responseMessage.Headers["x"]).Contains("http://localhost/foo");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("test");
+ Check.That(response.Message.Headers).ContainsKey("x");
+ Check.That(response.Message.Headers["x"]).Contains("text/plain");
+ Check.That(response.Message.Headers["x"]).Contains("http://localhost/foo");
}
[Theory]
@@ -348,15 +348,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", ClientIp, body);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("test {{request.Origin}} {{request.Port}} {{request.Protocol}} {{request.Host}}")
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsString).Equals("test http://localhost:1234 1234 http localhost");
+ Check.That(response.Message.BodyData.BodyAsString).Equals("test http://localhost:1234 1234 http localhost");
}
[Theory]
@@ -375,15 +375,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo_object"), "POST", ClientIp, bodyData);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson(new { x = "test {{request.Path}}" })
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(JsonConvert.SerializeObject(responseMessage.BodyData.BodyAsJson)).Equals("{\"x\":\"test /foo_object\"}");
+ Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("{\"x\":\"test /foo_object\"}");
}
[Theory]
@@ -402,15 +402,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo_array"), "POST", ClientIp, bodyData);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson(new[] { "first", "{{request.path}}", "{{request.bodyAsJson.a}}", "{{request.bodyAsJson.b}}", "last" })
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(JsonConvert.SerializeObject(responseMessage.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\"]");
}
[Fact]
@@ -419,15 +419,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost/foo?MyUniqueNumber=1"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithTransformer()
.WithBodyFromFile(@"c:\\{{request.query.MyUniqueNumber}}\\test.xml");
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
+ Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
}
[Theory(Skip = @"Does not work in Scriban --> c:\\[""1""]\\test.xml")]
@@ -438,15 +438,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
// Assign
var request = new RequestMessage(new UrlDetails("http://localhost/foo?MyUniqueNumber=1"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithTransformer(transformerType)
.WithBodyFromFile(@"c:\\{{request.query.MyUniqueNumber}}\\test.xml");
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
+ Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
}
[Theory]
@@ -463,17 +463,17 @@ namespace WireMock.Net.Tests.ResponseBuilders
var request = new RequestMessage(new UrlDetails("http://localhost/foo?MyUniqueNumber=1"), "GET", ClientIp);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithTransformer(transformerType, true)
.WithBodyFromFile(@"c:\\{{request.query.MyUniqueNumber}}\\test.xml");
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(responseMessage.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
- Check.That(responseMessage.BodyData.DetectedBodyType).Equals(BodyType.String);
- Check.That(responseMessage.BodyData.BodyAsString).Equals("");
+ Check.That(response.Message.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
+ Check.That(response.Message.BodyData.DetectedBodyType).Equals(BodyType.String);
+ Check.That(response.Message.BodyData.BodyAsString).Equals("");
}
[Theory]
@@ -492,15 +492,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo_object"), "POST", ClientIp, bodyData);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson("test")
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(JsonConvert.SerializeObject(responseMessage.BodyData.BodyAsJson)).Equals("\"test\"");
+ Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("\"test\"");
}
[Fact(Skip = "todo...")]
@@ -516,15 +516,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo_object"), "POST", ClientIp, bodyData);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson("{{{request.BodyAsJson}}}")
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(JsonConvert.SerializeObject(responseMessage.BodyData.BodyAsJson)).Equals("{\"name\":\"WireMock\"}");
+ Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("{\"name\":\"WireMock\"}");
}
[Theory(Skip = "{{{ }}} Does not work in Scriban")]
@@ -542,15 +542,15 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo_object"), "POST", ClientIp, bodyData);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBodyAsJson("{{{request.BodyAsJson}}}")
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- Check.That(JsonConvert.SerializeObject(responseMessage.BodyData.BodyAsJson)).Equals("{\"name\":\"WireMock\"}");
+ Check.That(JsonConvert.SerializeObject(response.Message.BodyData.BodyAsJson)).Equals("{\"name\":\"WireMock\"}");
}
[Theory]
@@ -570,16 +570,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
};
var request = new RequestMessage(new UrlDetails("http://localhost/foo_object"), "POST", ClientIp, bodyData);
- var response = Response.Create()
+ var responseBuilder = Response.Create()
.WithBody("{{request.Body}}", BodyDestinationFormat.SameAsSource, enc)
.WithTransformer(transformerType);
// Act
- var responseMessage = await response.ProvideResponseAsync(request, _settings);
+ var response = await responseBuilder.ProvideResponseAsync(request, _settings);
// Assert
- responseMessage.BodyData.BodyAsString.Should().Be(text);
- responseMessage.BodyData.Encoding.Should().Be(enc);
+ response.Message.BodyData.BodyAsString.Should().Be(text);
+ response.Message.BodyData.Encoding.Should().Be(enc);
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/WireMockAdminApiTests.cs b/test/WireMock.Net.Tests/WireMockAdminApiTests.cs
index bc2ec470..06e665c2 100644
--- a/test/WireMock.Net.Tests/WireMockAdminApiTests.cs
+++ b/test/WireMock.Net.Tests/WireMockAdminApiTests.cs
@@ -1,557 +1,557 @@
-#if !NET452 && !NET461
-using System;
-using System.Linq;
-using System.Net.Http;
-using System.Net.Http.Headers;
-using System.Text;
-using System.Threading.Tasks;
-using FluentAssertions;
-using Moq;
-using NFluent;
-using RestEase;
-using WireMock.Admin.Mappings;
-using WireMock.Admin.Settings;
-using WireMock.Client;
-using WireMock.Handlers;
-using WireMock.Logging;
-using WireMock.Models;
-using WireMock.Server;
-using WireMock.Settings;
-using Xunit;
-
-namespace WireMock.Net.Tests
-{
- public class WireMockAdminApiTests
- {
- [Fact]
- public async Task IWireMockAdminApi_GetSettingsAsync()
- {
- // Arrange
- var server = WireMockServer.StartWithAdminInterface();
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- var settings = await api.GetSettingsAsync();
- Check.That(settings).IsNotNull();
- }
-
- [Fact]
- public async Task IWireMockAdminApi_PostSettingsAsync()
- {
- // Arrange
- var server = WireMockServer.StartWithAdminInterface();
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- var settings = new SettingsModel();
- var status = await api.PostSettingsAsync(settings);
- Check.That(status.Status).Equals("Settings updated");
- }
-
- [Fact]
- public async Task IWireMockAdminApi_PutSettingsAsync()
- {
- // Arrange
- var server = WireMockServer.StartWithAdminInterface();
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- var settings = new SettingsModel();
- var status = await api.PutSettingsAsync(settings);
- Check.That(status.Status).Equals("Settings updated");
- }
-
- // https://github.com/WireMock-Net/WireMock.Net/issues/325
- [Fact]
- public async Task IWireMockAdminApi_PutMappingAsync()
- {
- // Arrange
- var server = WireMockServer.StartWithAdminInterface();
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- var model = new MappingModel
- {
- Request = new RequestModel { Path = "/1" },
- Response = new ResponseModel { Body = "txt", StatusCode = 200 },
- Priority = 500,
- Title = "test"
- };
- var result = await api.PutMappingAsync(new Guid("a0000000-0000-0000-0000-000000000000"), model);
-
- // Assert
- Check.That(result).IsNotNull();
- Check.That(result.Status).Equals("Mapping added or updated");
- Check.That(result.Guid).IsNotNull();
-
- var mapping = server.Mappings.Single(m => m.Priority == 500);
- Check.That(mapping).IsNotNull();
- Check.That(mapping.Title).Equals("test");
-
- server.Stop();
- }
-
- [Theory]
- [InlineData(null, null)]
- [InlineData(-1, -1)]
- [InlineData(0, 0)]
- [InlineData(200, 200)]
- [InlineData("200", "200")]
- public async Task IWireMockAdminApi_PostMappingAsync_WithStatusCode(object statusCode, object expectedStatusCode)
- {
- // Arrange
- var server = WireMockServer.StartWithAdminInterface();
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- var model = new MappingModel
- {
- Request = new RequestModel { Path = "/1" },
- Response = new ResponseModel { Body = "txt", StatusCode = statusCode },
- Priority = 500,
- Title = "test"
- };
- var result = await api.PostMappingAsync(model);
-
- // Assert
- Check.That(result).IsNotNull();
- Check.That(result.Status).IsNotNull();
- Check.That(result.Guid).IsNotNull();
-
- var mapping = server.Mappings.Single(m => m.Priority == 500);
- Check.That(mapping).IsNotNull();
- Check.That(mapping.Title).Equals("test");
-
- var response = await mapping.ProvideResponseAsync(new RequestMessage(new UrlDetails("http://localhost/1"), "GET", ""));
- Check.That(response.StatusCode).Equals(expectedStatusCode);
-
- server.Stop();
- }
-
- [Fact]
- public async Task IWireMockAdminApi_PostMappingsAsync()
- {
- // Arrange
- var server = WireMockServer.StartWithAdminInterface();
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- var model1 = new MappingModel
- {
- Request = new RequestModel { Path = "/1" },
- Response = new ResponseModel { Body = "txt 1" },
- Title = "test 1"
- };
- var model2 = new MappingModel
- {
- Request = new RequestModel { Path = "/2" },
- Response = new ResponseModel { Body = "txt 2" },
- Title = "test 2"
- };
- var result = await api.PostMappingsAsync(new[] { model1, model2 });
-
- // Assert
- Check.That(result).IsNotNull();
- Check.That(result.Status).IsNotNull();
- Check.That(result.Guid).IsNull();
- Check.That(server.Mappings.Where(m => !m.IsAdminInterface)).HasSize(2);
-
- server.Stop();
- }
-
- [Fact]
- public async Task IWireMockAdminApi_FindRequestsAsync()
- {
- // Arrange
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- StartAdminInterface = true,
- Logger = new WireMockNullLogger()
- });
- var serverUrl = "http://localhost:" + server.Ports[0];
- await new HttpClient().GetAsync(serverUrl + "/foo");
- var api = RestClient.For(serverUrl);
-
- // Act
- var requests = await api.FindRequestsAsync(new RequestModel { Methods = new[] { "GET" } });
-
- // Assert
- Check.That(requests).HasSize(1);
- var requestLogged = requests.First();
- Check.That(requestLogged.Request.Method).IsEqualTo("GET");
- Check.That(requestLogged.Request.Body).IsNull();
- Check.That(requestLogged.Request.Path).IsEqualTo("/foo");
- }
-
- [Fact]
- public async Task IWireMockAdminApi_GetRequestsAsync()
- {
- // Arrange
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- StartAdminInterface = true,
- Logger = new WireMockNullLogger()
- });
- var serverUrl = "http://localhost:" + server.Ports[0];
- await new HttpClient().GetAsync(serverUrl + "/foo");
- var api = RestClient.For(serverUrl);
-
- // Act
- var requests = await api.GetRequestsAsync();
-
- // Assert
- Check.That(requests).HasSize(1);
- var requestLogged = requests.First();
- Check.That(requestLogged.Request.Method).IsEqualTo("GET");
- Check.That(requestLogged.Request.Body).IsNull();
- Check.That(requestLogged.Request.Path).IsEqualTo("/foo");
- }
-
- [Fact]
- public async Task IWireMockAdminApi_GetRequestsAsync_JsonApi()
- {
- // Arrange
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- StartAdminInterface = true,
- Logger = new WireMockNullLogger()
- });
- string serverUrl = server.Urls[0];
- string data = "{\"data\":[{\"type\":\"program\",\"attributes\":{\"alias\":\"T000001\",\"title\":\"Title Group Entity\"}}]}";
- string jsonApiAcceptHeader = "application/vnd.api+json";
- string jsonApiContentType = "application/vnd.api+json";
-
- var request = new HttpRequestMessage(HttpMethod.Post, serverUrl);
- request.Headers.Accept.Clear();
- request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(jsonApiAcceptHeader));
- request.Content = new StringContent(data);
- request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(jsonApiContentType);
-
- var response = await new HttpClient().SendAsync(request);
- Check.That(response).IsNotNull();
-
- var api = RestClient.For(serverUrl);
-
- // Act
- var requests = await api.GetRequestsAsync();
-
- // Assert
- Check.That(requests).HasSize(1);
- var requestLogged = requests.First();
- Check.That(requestLogged.Request.Method).IsEqualTo("POST");
- Check.That(requestLogged.Request.Body).IsNotNull();
- Check.That(requestLogged.Request.Body).Contains("T000001");
- }
-
- [Fact]
- public async Task IWireMockAdminApi_GetMappingAsync_WithBodyModelMatcherModel_WithoutMethods_ShouldReturnCorrectMappingModel()
- {
- // Arrange
- var guid = Guid.NewGuid();
- var server = WireMockServer.StartWithAdminInterface();
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- var model = new MappingModel
- {
- Guid = guid,
- Request = new RequestModel
- {
- Path = "/1",
- Body = new BodyModel
- {
- Matcher = new MatcherModel
- {
- Name = "RegexMatcher",
- Pattern = "hello",
- IgnoreCase = true
- }
- }
- },
- Response = new ResponseModel { Body = "world" }
- };
- var postMappingResult = await api.PostMappingAsync(model);
-
- // Assert
- postMappingResult.Should().NotBeNull();
-
- var mapping = server.Mappings.FirstOrDefault(m => m.Guid == guid);
- mapping.Should().NotBeNull();
-
- var getMappingResult = await api.GetMappingAsync(guid);
- getMappingResult.Should().NotBeNull();
-
- getMappingResult.Request.Body.Should().BeEquivalentTo(model.Request.Body);
-
- server.Stop();
- }
-
- [Fact]
- public async Task IWireMockAdminApi_GetRequestsAsync_Json()
- {
- // Arrange
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- StartAdminInterface = true,
- Logger = new WireMockNullLogger()
- });
- string serverUrl = server.Urls[0];
- string data = "{\"alias\": \"T000001\"}";
- string jsonAcceptHeader = "application/json";
- string jsonApiContentType = "application/json";
-
- var request = new HttpRequestMessage(HttpMethod.Post, serverUrl);
- request.Headers.Accept.Clear();
- request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(jsonAcceptHeader));
- request.Content = new StringContent(data);
- request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(jsonApiContentType);
- var response = await new HttpClient().SendAsync(request);
- Check.That(response).IsNotNull();
-
- var api = RestClient.For(serverUrl);
-
- // Act
- var requests = await api.GetRequestsAsync();
-
- // Assert
- Check.That(requests).HasSize(1);
- var requestLogged = requests.First();
- Check.That(requestLogged.Request.Method).IsEqualTo("POST");
- Check.That(requestLogged.Request.Body).IsNotNull();
- Check.That(requestLogged.Request.Body).Contains("T000001");
- }
-
- [Fact]
- public async Task IWireMockAdminApi_PostFileAsync_Ascii()
- {
- // Arrange
- var filesystemHandlerMock = new Mock(MockBehavior.Strict);
- filesystemHandlerMock.Setup(fs => fs.GetMappingFolder()).Returns("__admin/mappings");
- filesystemHandlerMock.Setup(fs => fs.FolderExists(It.IsAny())).Returns(true);
- filesystemHandlerMock.Setup(fs => fs.WriteFile(It.IsAny(), It.IsAny()));
-
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- UseSSL = false,
- StartAdminInterface = true,
- FileSystemHandler = filesystemHandlerMock.Object
- });
-
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- var request = await api.PostFileAsync("filename.txt", "abc");
-
- // Assert
- Check.That(request.Guid).IsNull();
- Check.That(request.Status).Contains("File");
-
- // Verify
- filesystemHandlerMock.Verify(fs => fs.GetMappingFolder(), Times.Once);
- filesystemHandlerMock.Verify(fs => fs.FolderExists(It.IsAny()), Times.Once);
- filesystemHandlerMock.Verify(fs => fs.WriteFile(It.Is(p => p == "filename.txt"), It.IsAny()), Times.Once);
- filesystemHandlerMock.VerifyNoOtherCalls();
-
- server.Stop();
- }
-
- [Fact]
- public async Task IWireMockAdminApi_PutFileAsync_Ascii()
- {
- // Arrange
- var filesystemHandlerMock = new Mock(MockBehavior.Strict);
- filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(true);
- filesystemHandlerMock.Setup(fs => fs.WriteFile(It.IsAny(), It.IsAny()));
-
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- UseSSL = false,
- StartAdminInterface = true,
- FileSystemHandler = filesystemHandlerMock.Object
- });
-
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- var request = await api.PutFileAsync("filename.txt", "abc-abc");
-
- // Assert
- Check.That(request.Guid).IsNull();
- Check.That(request.Status).Contains("File");
-
- // Verify
- filesystemHandlerMock.Verify(fs => fs.WriteFile(It.Is(p => p == "filename.txt"), It.IsAny()), Times.Once);
- filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
- filesystemHandlerMock.VerifyNoOtherCalls();
-
- server.Stop();
- }
-
- [Fact]
- public void IWireMockAdminApi_PutFileAsync_NotFound()
- {
- // Arrange
- var filesystemHandlerMock = new Mock(MockBehavior.Strict);
- filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(false);
-
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- UseSSL = false,
- StartAdminInterface = true,
- FileSystemHandler = filesystemHandlerMock.Object
- });
-
- var api = RestClient.For(server.Urls[0]);
-
- // Act and Assert
- Check.ThatAsyncCode(() => api.PutFileAsync("filename.txt", "xxx")).Throws();
-
- // Verify
- filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
- filesystemHandlerMock.VerifyNoOtherCalls();
-
- server.Stop();
- }
-
- [Fact]
- public void IWireMockAdminApi_GetFileAsync_NotFound()
- {
- // Arrange
- var filesystemHandlerMock = new Mock(MockBehavior.Strict);
- filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(false);
- filesystemHandlerMock.Setup(fs => fs.ReadFile(It.IsAny())).Returns(Encoding.ASCII.GetBytes("Here's a string."));
-
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- UseSSL = false,
- StartAdminInterface = true,
- FileSystemHandler = filesystemHandlerMock.Object
- });
-
- var api = RestClient.For(server.Urls[0]);
-
- // Act and Assert
- Check.ThatAsyncCode(() => api.GetFileAsync("filename.txt")).Throws();
-
- // Verify
- filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
- filesystemHandlerMock.VerifyNoOtherCalls();
-
- server.Stop();
- }
-
- [Fact]
- public async Task IWireMockAdminApi_GetFileAsync_Found()
- {
- // Arrange
- string data = "Here's a string.";
- var filesystemHandlerMock = new Mock(MockBehavior.Strict);
- filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(true);
- filesystemHandlerMock.Setup(fs => fs.ReadFile(It.IsAny())).Returns(Encoding.ASCII.GetBytes(data));
-
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- UseSSL = false,
- StartAdminInterface = true,
- FileSystemHandler = filesystemHandlerMock.Object
- });
-
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- string file = await api.GetFileAsync("filename.txt");
-
- // Assert
- Check.That(file).Equals(data);
-
- // Verify
- filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
- filesystemHandlerMock.Verify(fs => fs.ReadFile(It.Is(p => p == "filename.txt")), Times.Once);
- filesystemHandlerMock.VerifyNoOtherCalls();
-
- server.Stop();
- }
-
- [Fact]
- public async Task IWireMockAdminApi_DeleteFileAsync_Ok()
- {
- // Arrange
- var filesystemHandlerMock = new Mock(MockBehavior.Strict);
- filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(true);
- filesystemHandlerMock.Setup(fs => fs.DeleteFile(It.IsAny()));
-
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- UseSSL = false,
- StartAdminInterface = true,
- FileSystemHandler = filesystemHandlerMock.Object
- });
-
- var api = RestClient.For(server.Urls[0]);
-
- // Act
- await api.DeleteFileAsync("filename.txt");
-
- // Verify
- filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
- filesystemHandlerMock.Verify(fs => fs.DeleteFile(It.Is(p => p == "filename.txt")), Times.Once);
- filesystemHandlerMock.VerifyNoOtherCalls();
-
- server.Stop();
- }
-
- [Fact]
- public void IWireMockAdminApi_DeleteFileAsync_NotFound()
- {
- // Arrange
- var filesystemHandlerMock = new Mock(MockBehavior.Strict);
- filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(false);
- filesystemHandlerMock.Setup(fs => fs.DeleteFile(It.IsAny()));
-
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- UseSSL = false,
- StartAdminInterface = true,
- FileSystemHandler = filesystemHandlerMock.Object
- });
-
- var api = RestClient.For(server.Urls[0]);
-
- // Act and Assert
- Check.ThatAsyncCode(() => api.DeleteFileAsync("filename.txt")).Throws();
-
- // Verify
- filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
- filesystemHandlerMock.VerifyNoOtherCalls();
-
- server.Stop();
- }
-
- [Fact]
- public void IWireMockAdminApi_FileExistsAsync_NotFound()
- {
- // Arrange
- var filesystemHandlerMock = new Mock(MockBehavior.Strict);
- filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(false);
-
- var server = WireMockServer.Start(new WireMockServerSettings
- {
- UseSSL = false,
- StartAdminInterface = true,
- FileSystemHandler = filesystemHandlerMock.Object
- });
-
- var api = RestClient.For(server.Urls[0]);
-
- // Act and Assert
- Check.ThatAsyncCode(() => api.FileExistsAsync("filename.txt")).Throws();
-
- // Verify
- filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
- filesystemHandlerMock.VerifyNoOtherCalls();
-
- server.Stop();
- }
- }
+#if !NET452 && !NET461
+using System;
+using System.Linq;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+using FluentAssertions;
+using Moq;
+using NFluent;
+using RestEase;
+using WireMock.Admin.Mappings;
+using WireMock.Admin.Settings;
+using WireMock.Client;
+using WireMock.Handlers;
+using WireMock.Logging;
+using WireMock.Models;
+using WireMock.Server;
+using WireMock.Settings;
+using Xunit;
+
+namespace WireMock.Net.Tests
+{
+ public class WireMockAdminApiTests
+ {
+ [Fact]
+ public async Task IWireMockAdminApi_GetSettingsAsync()
+ {
+ // Arrange
+ var server = WireMockServer.StartWithAdminInterface();
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ var settings = await api.GetSettingsAsync();
+ Check.That(settings).IsNotNull();
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_PostSettingsAsync()
+ {
+ // Arrange
+ var server = WireMockServer.StartWithAdminInterface();
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ var settings = new SettingsModel();
+ var status = await api.PostSettingsAsync(settings);
+ Check.That(status.Status).Equals("Settings updated");
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_PutSettingsAsync()
+ {
+ // Arrange
+ var server = WireMockServer.StartWithAdminInterface();
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ var settings = new SettingsModel();
+ var status = await api.PutSettingsAsync(settings);
+ Check.That(status.Status).Equals("Settings updated");
+ }
+
+ // https://github.com/WireMock-Net/WireMock.Net/issues/325
+ [Fact]
+ public async Task IWireMockAdminApi_PutMappingAsync()
+ {
+ // Arrange
+ var server = WireMockServer.StartWithAdminInterface();
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ var model = new MappingModel
+ {
+ Request = new RequestModel { Path = "/1" },
+ Response = new ResponseModel { Body = "txt", StatusCode = 200 },
+ Priority = 500,
+ Title = "test"
+ };
+ var result = await api.PutMappingAsync(new Guid("a0000000-0000-0000-0000-000000000000"), model);
+
+ // Assert
+ Check.That(result).IsNotNull();
+ Check.That(result.Status).Equals("Mapping added or updated");
+ Check.That(result.Guid).IsNotNull();
+
+ var mapping = server.Mappings.Single(m => m.Priority == 500);
+ Check.That(mapping).IsNotNull();
+ Check.That(mapping.Title).Equals("test");
+
+ server.Stop();
+ }
+
+ [Theory]
+ [InlineData(null, null)]
+ [InlineData(-1, -1)]
+ [InlineData(0, 0)]
+ [InlineData(200, 200)]
+ [InlineData("200", "200")]
+ public async Task IWireMockAdminApi_PostMappingAsync_WithStatusCode(object statusCode, object expectedStatusCode)
+ {
+ // Arrange
+ var server = WireMockServer.StartWithAdminInterface();
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ var model = new MappingModel
+ {
+ Request = new RequestModel { Path = "/1" },
+ Response = new ResponseModel { Body = "txt", StatusCode = statusCode },
+ Priority = 500,
+ Title = "test"
+ };
+ var result = await api.PostMappingAsync(model);
+
+ // Assert
+ Check.That(result).IsNotNull();
+ Check.That(result.Status).IsNotNull();
+ Check.That(result.Guid).IsNotNull();
+
+ var mapping = server.Mappings.Single(m => m.Priority == 500);
+ Check.That(mapping).IsNotNull();
+ Check.That(mapping.Title).Equals("test");
+
+ var response = await mapping.ProvideResponseAsync(new RequestMessage(new UrlDetails("http://localhost/1"), "GET", ""));
+ Check.That(response.Message.StatusCode).Equals(expectedStatusCode);
+
+ server.Stop();
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_PostMappingsAsync()
+ {
+ // Arrange
+ var server = WireMockServer.StartWithAdminInterface();
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ var model1 = new MappingModel
+ {
+ Request = new RequestModel { Path = "/1" },
+ Response = new ResponseModel { Body = "txt 1" },
+ Title = "test 1"
+ };
+ var model2 = new MappingModel
+ {
+ Request = new RequestModel { Path = "/2" },
+ Response = new ResponseModel { Body = "txt 2" },
+ Title = "test 2"
+ };
+ var result = await api.PostMappingsAsync(new[] { model1, model2 });
+
+ // Assert
+ Check.That(result).IsNotNull();
+ Check.That(result.Status).IsNotNull();
+ Check.That(result.Guid).IsNull();
+ Check.That(server.Mappings.Where(m => !m.IsAdminInterface)).HasSize(2);
+
+ server.Stop();
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_FindRequestsAsync()
+ {
+ // Arrange
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ StartAdminInterface = true,
+ Logger = new WireMockNullLogger()
+ });
+ var serverUrl = "http://localhost:" + server.Ports[0];
+ await new HttpClient().GetAsync(serverUrl + "/foo");
+ var api = RestClient.For(serverUrl);
+
+ // Act
+ var requests = await api.FindRequestsAsync(new RequestModel { Methods = new[] { "GET" } });
+
+ // Assert
+ Check.That(requests).HasSize(1);
+ var requestLogged = requests.First();
+ Check.That(requestLogged.Request.Method).IsEqualTo("GET");
+ Check.That(requestLogged.Request.Body).IsNull();
+ Check.That(requestLogged.Request.Path).IsEqualTo("/foo");
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_GetRequestsAsync()
+ {
+ // Arrange
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ StartAdminInterface = true,
+ Logger = new WireMockNullLogger()
+ });
+ var serverUrl = "http://localhost:" + server.Ports[0];
+ await new HttpClient().GetAsync(serverUrl + "/foo");
+ var api = RestClient.For(serverUrl);
+
+ // Act
+ var requests = await api.GetRequestsAsync();
+
+ // Assert
+ Check.That(requests).HasSize(1);
+ var requestLogged = requests.First();
+ Check.That(requestLogged.Request.Method).IsEqualTo("GET");
+ Check.That(requestLogged.Request.Body).IsNull();
+ Check.That(requestLogged.Request.Path).IsEqualTo("/foo");
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_GetRequestsAsync_JsonApi()
+ {
+ // Arrange
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ StartAdminInterface = true,
+ Logger = new WireMockNullLogger()
+ });
+ string serverUrl = server.Urls[0];
+ string data = "{\"data\":[{\"type\":\"program\",\"attributes\":{\"alias\":\"T000001\",\"title\":\"Title Group Entity\"}}]}";
+ string jsonApiAcceptHeader = "application/vnd.api+json";
+ string jsonApiContentType = "application/vnd.api+json";
+
+ var request = new HttpRequestMessage(HttpMethod.Post, serverUrl);
+ request.Headers.Accept.Clear();
+ request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(jsonApiAcceptHeader));
+ request.Content = new StringContent(data);
+ request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(jsonApiContentType);
+
+ var response = await new HttpClient().SendAsync(request);
+ Check.That(response).IsNotNull();
+
+ var api = RestClient.For(serverUrl);
+
+ // Act
+ var requests = await api.GetRequestsAsync();
+
+ // Assert
+ Check.That(requests).HasSize(1);
+ var requestLogged = requests.First();
+ Check.That(requestLogged.Request.Method).IsEqualTo("POST");
+ Check.That(requestLogged.Request.Body).IsNotNull();
+ Check.That(requestLogged.Request.Body).Contains("T000001");
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_GetMappingAsync_WithBodyModelMatcherModel_WithoutMethods_ShouldReturnCorrectMappingModel()
+ {
+ // Arrange
+ var guid = Guid.NewGuid();
+ var server = WireMockServer.StartWithAdminInterface();
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ var model = new MappingModel
+ {
+ Guid = guid,
+ Request = new RequestModel
+ {
+ Path = "/1",
+ Body = new BodyModel
+ {
+ Matcher = new MatcherModel
+ {
+ Name = "RegexMatcher",
+ Pattern = "hello",
+ IgnoreCase = true
+ }
+ }
+ },
+ Response = new ResponseModel { Body = "world" }
+ };
+ var postMappingResult = await api.PostMappingAsync(model);
+
+ // Assert
+ postMappingResult.Should().NotBeNull();
+
+ var mapping = server.Mappings.FirstOrDefault(m => m.Guid == guid);
+ mapping.Should().NotBeNull();
+
+ var getMappingResult = await api.GetMappingAsync(guid);
+ getMappingResult.Should().NotBeNull();
+
+ getMappingResult.Request.Body.Should().BeEquivalentTo(model.Request.Body);
+
+ server.Stop();
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_GetRequestsAsync_Json()
+ {
+ // Arrange
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ StartAdminInterface = true,
+ Logger = new WireMockNullLogger()
+ });
+ string serverUrl = server.Urls[0];
+ string data = "{\"alias\": \"T000001\"}";
+ string jsonAcceptHeader = "application/json";
+ string jsonApiContentType = "application/json";
+
+ var request = new HttpRequestMessage(HttpMethod.Post, serverUrl);
+ request.Headers.Accept.Clear();
+ request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(jsonAcceptHeader));
+ request.Content = new StringContent(data);
+ request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(jsonApiContentType);
+ var response = await new HttpClient().SendAsync(request);
+ Check.That(response).IsNotNull();
+
+ var api = RestClient.For(serverUrl);
+
+ // Act
+ var requests = await api.GetRequestsAsync();
+
+ // Assert
+ Check.That(requests).HasSize(1);
+ var requestLogged = requests.First();
+ Check.That(requestLogged.Request.Method).IsEqualTo("POST");
+ Check.That(requestLogged.Request.Body).IsNotNull();
+ Check.That(requestLogged.Request.Body).Contains("T000001");
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_PostFileAsync_Ascii()
+ {
+ // Arrange
+ var filesystemHandlerMock = new Mock(MockBehavior.Strict);
+ filesystemHandlerMock.Setup(fs => fs.GetMappingFolder()).Returns("__admin/mappings");
+ filesystemHandlerMock.Setup(fs => fs.FolderExists(It.IsAny())).Returns(true);
+ filesystemHandlerMock.Setup(fs => fs.WriteFile(It.IsAny(), It.IsAny()));
+
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ UseSSL = false,
+ StartAdminInterface = true,
+ FileSystemHandler = filesystemHandlerMock.Object
+ });
+
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ var request = await api.PostFileAsync("filename.txt", "abc");
+
+ // Assert
+ Check.That(request.Guid).IsNull();
+ Check.That(request.Status).Contains("File");
+
+ // Verify
+ filesystemHandlerMock.Verify(fs => fs.GetMappingFolder(), Times.Once);
+ filesystemHandlerMock.Verify(fs => fs.FolderExists(It.IsAny()), Times.Once);
+ filesystemHandlerMock.Verify(fs => fs.WriteFile(It.Is(p => p == "filename.txt"), It.IsAny()), Times.Once);
+ filesystemHandlerMock.VerifyNoOtherCalls();
+
+ server.Stop();
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_PutFileAsync_Ascii()
+ {
+ // Arrange
+ var filesystemHandlerMock = new Mock(MockBehavior.Strict);
+ filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(true);
+ filesystemHandlerMock.Setup(fs => fs.WriteFile(It.IsAny(), It.IsAny()));
+
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ UseSSL = false,
+ StartAdminInterface = true,
+ FileSystemHandler = filesystemHandlerMock.Object
+ });
+
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ var request = await api.PutFileAsync("filename.txt", "abc-abc");
+
+ // Assert
+ Check.That(request.Guid).IsNull();
+ Check.That(request.Status).Contains("File");
+
+ // Verify
+ filesystemHandlerMock.Verify(fs => fs.WriteFile(It.Is(p => p == "filename.txt"), It.IsAny()), Times.Once);
+ filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
+ filesystemHandlerMock.VerifyNoOtherCalls();
+
+ server.Stop();
+ }
+
+ [Fact]
+ public void IWireMockAdminApi_PutFileAsync_NotFound()
+ {
+ // Arrange
+ var filesystemHandlerMock = new Mock(MockBehavior.Strict);
+ filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(false);
+
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ UseSSL = false,
+ StartAdminInterface = true,
+ FileSystemHandler = filesystemHandlerMock.Object
+ });
+
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act and Assert
+ Check.ThatAsyncCode(() => api.PutFileAsync("filename.txt", "xxx")).Throws();
+
+ // Verify
+ filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
+ filesystemHandlerMock.VerifyNoOtherCalls();
+
+ server.Stop();
+ }
+
+ [Fact]
+ public void IWireMockAdminApi_GetFileAsync_NotFound()
+ {
+ // Arrange
+ var filesystemHandlerMock = new Mock(MockBehavior.Strict);
+ filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(false);
+ filesystemHandlerMock.Setup(fs => fs.ReadFile(It.IsAny())).Returns(Encoding.ASCII.GetBytes("Here's a string."));
+
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ UseSSL = false,
+ StartAdminInterface = true,
+ FileSystemHandler = filesystemHandlerMock.Object
+ });
+
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act and Assert
+ Check.ThatAsyncCode(() => api.GetFileAsync("filename.txt")).Throws();
+
+ // Verify
+ filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
+ filesystemHandlerMock.VerifyNoOtherCalls();
+
+ server.Stop();
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_GetFileAsync_Found()
+ {
+ // Arrange
+ string data = "Here's a string.";
+ var filesystemHandlerMock = new Mock(MockBehavior.Strict);
+ filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(true);
+ filesystemHandlerMock.Setup(fs => fs.ReadFile(It.IsAny())).Returns(Encoding.ASCII.GetBytes(data));
+
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ UseSSL = false,
+ StartAdminInterface = true,
+ FileSystemHandler = filesystemHandlerMock.Object
+ });
+
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ string file = await api.GetFileAsync("filename.txt");
+
+ // Assert
+ Check.That(file).Equals(data);
+
+ // Verify
+ filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
+ filesystemHandlerMock.Verify(fs => fs.ReadFile(It.Is(p => p == "filename.txt")), Times.Once);
+ filesystemHandlerMock.VerifyNoOtherCalls();
+
+ server.Stop();
+ }
+
+ [Fact]
+ public async Task IWireMockAdminApi_DeleteFileAsync_Ok()
+ {
+ // Arrange
+ var filesystemHandlerMock = new Mock(MockBehavior.Strict);
+ filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(true);
+ filesystemHandlerMock.Setup(fs => fs.DeleteFile(It.IsAny()));
+
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ UseSSL = false,
+ StartAdminInterface = true,
+ FileSystemHandler = filesystemHandlerMock.Object
+ });
+
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act
+ await api.DeleteFileAsync("filename.txt");
+
+ // Verify
+ filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
+ filesystemHandlerMock.Verify(fs => fs.DeleteFile(It.Is(p => p == "filename.txt")), Times.Once);
+ filesystemHandlerMock.VerifyNoOtherCalls();
+
+ server.Stop();
+ }
+
+ [Fact]
+ public void IWireMockAdminApi_DeleteFileAsync_NotFound()
+ {
+ // Arrange
+ var filesystemHandlerMock = new Mock(MockBehavior.Strict);
+ filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(false);
+ filesystemHandlerMock.Setup(fs => fs.DeleteFile(It.IsAny()));
+
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ UseSSL = false,
+ StartAdminInterface = true,
+ FileSystemHandler = filesystemHandlerMock.Object
+ });
+
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act and Assert
+ Check.ThatAsyncCode(() => api.DeleteFileAsync("filename.txt")).Throws();
+
+ // Verify
+ filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
+ filesystemHandlerMock.VerifyNoOtherCalls();
+
+ server.Stop();
+ }
+
+ [Fact]
+ public void IWireMockAdminApi_FileExistsAsync_NotFound()
+ {
+ // Arrange
+ var filesystemHandlerMock = new Mock(MockBehavior.Strict);
+ filesystemHandlerMock.Setup(fs => fs.FileExists(It.IsAny())).Returns(false);
+
+ var server = WireMockServer.Start(new WireMockServerSettings
+ {
+ UseSSL = false,
+ StartAdminInterface = true,
+ FileSystemHandler = filesystemHandlerMock.Object
+ });
+
+ var api = RestClient.For(server.Urls[0]);
+
+ // Act and Assert
+ Check.ThatAsyncCode(() => api.FileExistsAsync("filename.txt")).Throws();
+
+ // Verify
+ filesystemHandlerMock.Verify(fs => fs.FileExists(It.Is(p => p == "filename.txt")), Times.Once);
+ filesystemHandlerMock.VerifyNoOtherCalls();
+
+ server.Stop();
+ }
+ }
}
#endif
\ No newline at end of file