diff --git a/Directory.Build.props b/Directory.Build.props
index 9937770d..13eb4ee4 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -4,7 +4,7 @@
- 1.0.19
+ 1.0.20
diff --git a/GitHubReleaseNotes.txt b/GitHubReleaseNotes.txt
index 5dd7de2e..88cae14c 100644
--- a/GitHubReleaseNotes.txt
+++ b/GitHubReleaseNotes.txt
@@ -1,3 +1,3 @@
https://github.com/StefH/GitHubReleaseNotes
-GitHubReleaseNotes.exe --output CHANGELOG.md --skip-empty-releases --version 1.0.19.0
\ No newline at end of file
+GitHubReleaseNotes.exe --output CHANGELOG.md --skip-empty-releases --version 1.0.20.0
\ No newline at end of file
diff --git a/src/WireMock.Net/Admin/Mappings/MappingModel.cs b/src/WireMock.Net/Admin/Mappings/MappingModel.cs
index 2e005729..f5eb8afe 100644
--- a/src/WireMock.Net/Admin/Mappings/MappingModel.cs
+++ b/src/WireMock.Net/Admin/Mappings/MappingModel.cs
@@ -39,13 +39,18 @@ namespace WireMock.Admin.Mappings
public string SetStateTo { get; set; }
///
- /// The request.
+ /// The request model.
///
public RequestModel Request { get; set; }
///
- /// The response.
+ /// The response model.
///
public ResponseModel Response { get; set; }
+
+ ///
+ /// Saves this mapping as a static mapping file.
+ ///
+ public bool? SaveToFile { get; set; }
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net/Admin/Mappings/ResponseModel.cs b/src/WireMock.Net/Admin/Mappings/ResponseModel.cs
index 5998d4e8..29c71b44 100644
--- a/src/WireMock.Net/Admin/Mappings/ResponseModel.cs
+++ b/src/WireMock.Net/Admin/Mappings/ResponseModel.cs
@@ -58,9 +58,9 @@ namespace WireMock.Admin.Mappings
public EncodingModel BodyEncoding { get; set; }
///
- /// Gets or sets a value indicating whether [use transformer].
+ /// Use Handlebars transformer.
///
- public bool UseTransformer { get; set; }
+ public bool? UseTransformer { get; set; }
///
/// Gets or sets the headers.
diff --git a/src/WireMock.Net/IMapping.cs b/src/WireMock.Net/IMapping.cs
index 4dca9571..3d3beefa 100644
--- a/src/WireMock.Net/IMapping.cs
+++ b/src/WireMock.Net/IMapping.cs
@@ -1,6 +1,7 @@
-using System;
+using JetBrains.Annotations;
+using System;
using System.Threading.Tasks;
-using JetBrains.Annotations;
+using WireMock.Handlers;
using WireMock.Matchers.Request;
using WireMock.ResponseProviders;
@@ -60,6 +61,11 @@ namespace WireMock
///
IResponseProvider Provider { get; }
+ ///
+ /// The FileSystemHandler.
+ ///
+ IFileSystemHandler FileSystemHandler { get; }
+
///
/// Is State started ?
///
diff --git a/src/WireMock.Net/Mapping.cs b/src/WireMock.Net/Mapping.cs
index cbf24ec5..dd4d818b 100644
--- a/src/WireMock.Net/Mapping.cs
+++ b/src/WireMock.Net/Mapping.cs
@@ -1,6 +1,7 @@
-using System;
+using JetBrains.Annotations;
+using System;
using System.Threading.Tasks;
-using JetBrains.Annotations;
+using WireMock.Handlers;
using WireMock.Matchers.Request;
using WireMock.ResponseProviders;
@@ -38,6 +39,9 @@ namespace WireMock
///
public IResponseProvider Provider { get; }
+ ///
+ public IFileSystemHandler FileSystemHandler { get; }
+
///
public bool IsStartState => Scenario == null || Scenario != null && NextState != null && ExecutionConditionState == null;
@@ -50,17 +54,21 @@ namespace WireMock
/// The unique identifier.
/// The unique title (can be null).
/// The full file path from this mapping title (can be null).
+ /// The fileSystemHandler.
/// The request matcher.
/// The provider.
/// The priority for this mapping.
/// The scenario. [Optional]
/// State in which the current mapping can occur. [Optional]
/// The next state which will occur after the current mapping execution. [Optional]
- public Mapping(Guid guid, [CanBeNull] string title, [CanBeNull] string path, IRequestMatcher requestMatcher, IResponseProvider provider, int priority, [CanBeNull] string scenario, [CanBeNull] string executionConditionState, [CanBeNull] string nextState)
+ public Mapping(Guid guid, [CanBeNull] string title, [CanBeNull] string path,
+ [NotNull] IFileSystemHandler fileSystemHandler, [NotNull] IRequestMatcher requestMatcher, [NotNull] IResponseProvider provider,
+ int priority, [CanBeNull] string scenario, [CanBeNull] string executionConditionState, [CanBeNull] string nextState)
{
Guid = guid;
Title = title;
Path = path;
+ FileSystemHandler = fileSystemHandler;
RequestMatcher = requestMatcher;
Provider = provider;
Priority = priority;
@@ -72,7 +80,7 @@ namespace WireMock
///
public async Task ResponseToAsync(RequestMessage requestMessage)
{
- return await Provider.ProvideResponseAsync(requestMessage);
+ return await Provider.ProvideResponseAsync(requestMessage, FileSystemHandler);
}
///
diff --git a/src/WireMock.Net/MappingRegistrationCallback.cs b/src/WireMock.Net/MappingRegistrationCallback.cs
index cd5ad6f3..0a78d11a 100644
--- a/src/WireMock.Net/MappingRegistrationCallback.cs
+++ b/src/WireMock.Net/MappingRegistrationCallback.cs
@@ -4,5 +4,6 @@
/// The registration callback.
///
/// The mapping.
- public delegate void RegistrationCallback(IMapping mapping);
+ /// Optional boolean to indicate if this mapping should be saved as static mapping file.
+ public delegate void RegistrationCallback(IMapping mapping, bool saveToFile = false);
}
\ No newline at end of file
diff --git a/src/WireMock.Net/ResponseBuilders/Response.cs b/src/WireMock.Net/ResponseBuilders/Response.cs
index 6e2fd7cf..f806ee84 100644
--- a/src/WireMock.Net/ResponseBuilders/Response.cs
+++ b/src/WireMock.Net/ResponseBuilders/Response.cs
@@ -21,8 +21,6 @@ namespace WireMock.ResponseBuilders
///
public class Response : IResponseBuilder
{
- private readonly IFileSystemHandler _fileSystemHandler;
- private readonly ResponseMessageTransformer _responseMessageTransformer;
private HttpClient _httpClientForProxy;
///
@@ -94,9 +92,6 @@ namespace WireMock.ResponseBuilders
private Response(ResponseMessage responseMessage)
{
ResponseMessage = responseMessage;
-
- _fileSystemHandler = new LocalFileSystemHandler();
- _responseMessageTransformer = new ResponseMessageTransformer(_fileSystemHandler);
}
///
@@ -225,18 +220,17 @@ namespace WireMock.ResponseBuilders
ResponseMessage.BodyData = new BodyData
{
- BodyAsFileIsCached = cache
+ BodyAsFileIsCached = cache,
+ BodyAsFile = filename
};
if (cache && !UseTransformer)
{
ResponseMessage.BodyData.DetectedBodyType = BodyType.Bytes;
- ResponseMessage.BodyData.BodyAsBytes = _fileSystemHandler.ReadResponseBodyAsFile(filename);
}
else
{
ResponseMessage.BodyData.DetectedBodyType = BodyType.File;
- ResponseMessage.BodyData.BodyAsFile = filename;
}
return this;
@@ -377,12 +371,7 @@ namespace WireMock.ResponseBuilders
return this;
}
- ///
- /// The provide response.
- ///
- /// The request.
- /// The .
- public async Task ProvideResponseAsync(RequestMessage requestMessage)
+ public async Task ProvideResponseAsync(RequestMessage requestMessage, IFileSystemHandler fileSystemHandler)
{
Check.NotNull(requestMessage, nameof(requestMessage));
@@ -421,10 +410,16 @@ namespace WireMock.ResponseBuilders
if (UseTransformer)
{
- return _responseMessageTransformer.Transform(requestMessage, ResponseMessage);
+ var responseMessageTransformer = new ResponseMessageTransformer(fileSystemHandler);
+ return responseMessageTransformer.Transform(requestMessage, ResponseMessage);
+ }
+
+ if (!UseTransformer && ResponseMessage.BodyData?.BodyAsFileIsCached == true)
+ {
+ ResponseMessage.BodyData.BodyAsBytes = fileSystemHandler.ReadResponseBodyAsFile(ResponseMessage.BodyData.BodyAsFile);
+ ResponseMessage.BodyData.BodyAsFile = null;
}
- // Just return normal defined ResponseMessage
return ResponseMessage;
}
}
diff --git a/src/WireMock.Net/ResponseMessageBuilder.cs b/src/WireMock.Net/ResponseMessageBuilder.cs
index a6d85bb5..1e213976 100644
--- a/src/WireMock.Net/ResponseMessageBuilder.cs
+++ b/src/WireMock.Net/ResponseMessageBuilder.cs
@@ -27,7 +27,11 @@ namespace WireMock
response.BodyData = new BodyData
{
DetectedBodyType = BodyType.Json,
- BodyAsJson = new StatusModel { Status = message, Guid = guid }
+ BodyAsJson = new StatusModel
+ {
+ Guid = guid,
+ Status = message
+ }
};
}
diff --git a/src/WireMock.Net/ResponseProviders/DynamicAsyncResponseProvider.cs b/src/WireMock.Net/ResponseProviders/DynamicAsyncResponseProvider.cs
index afbaa664..f1456b31 100644
--- a/src/WireMock.Net/ResponseProviders/DynamicAsyncResponseProvider.cs
+++ b/src/WireMock.Net/ResponseProviders/DynamicAsyncResponseProvider.cs
@@ -1,7 +1,6 @@
using System;
using System.Threading.Tasks;
-using JetBrains.Annotations;
-using WireMock.Validation;
+using WireMock.Handlers;
namespace WireMock.ResponseProviders
{
@@ -9,14 +8,12 @@ namespace WireMock.ResponseProviders
{
private readonly Func> _responseMessageFunc;
- public DynamicAsyncResponseProvider([NotNull] Func> responseMessageFunc)
+ public DynamicAsyncResponseProvider(Func> responseMessageFunc)
{
- Check.NotNull(responseMessageFunc, nameof(responseMessageFunc));
-
_responseMessageFunc = responseMessageFunc;
}
- public Task ProvideResponseAsync(RequestMessage requestMessage)
+ public Task ProvideResponseAsync(RequestMessage requestMessage, IFileSystemHandler fileSystemHandler)
{
return _responseMessageFunc(requestMessage);
}
diff --git a/src/WireMock.Net/ResponseProviders/DynamicResponseProvider.cs b/src/WireMock.Net/ResponseProviders/DynamicResponseProvider.cs
index d04b9fe5..534f7a5e 100644
--- a/src/WireMock.Net/ResponseProviders/DynamicResponseProvider.cs
+++ b/src/WireMock.Net/ResponseProviders/DynamicResponseProvider.cs
@@ -1,7 +1,6 @@
using System;
using System.Threading.Tasks;
-using JetBrains.Annotations;
-using WireMock.Validation;
+using WireMock.Handlers;
namespace WireMock.ResponseProviders
{
@@ -9,14 +8,12 @@ namespace WireMock.ResponseProviders
{
private readonly Func _responseMessageFunc;
- public DynamicResponseProvider([NotNull] Func responseMessageFunc)
+ public DynamicResponseProvider(Func responseMessageFunc)
{
- Check.NotNull(responseMessageFunc, nameof(responseMessageFunc));
-
_responseMessageFunc = responseMessageFunc;
}
- public Task ProvideResponseAsync(RequestMessage requestMessage)
+ public Task ProvideResponseAsync(RequestMessage requestMessage, IFileSystemHandler fileSystemHandler)
{
return Task.FromResult(_responseMessageFunc(requestMessage));
}
diff --git a/src/WireMock.Net/ResponseProviders/IResponseProvider.cs b/src/WireMock.Net/ResponseProviders/IResponseProvider.cs
index 38271f7d..ca4f65d4 100644
--- a/src/WireMock.Net/ResponseProviders/IResponseProvider.cs
+++ b/src/WireMock.Net/ResponseProviders/IResponseProvider.cs
@@ -1,5 +1,6 @@
using System.Threading.Tasks;
using JetBrains.Annotations;
+using WireMock.Handlers;
namespace WireMock.ResponseProviders
{
@@ -12,7 +13,8 @@ namespace WireMock.ResponseProviders
/// The provide response.
///
/// The request.
+ /// The fileSystemHandler.
/// The .
- Task ProvideResponseAsync([NotNull] RequestMessage requestMessage);
+ Task ProvideResponseAsync([NotNull] RequestMessage requestMessage, [NotNull] IFileSystemHandler fileSystemHandler);
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net/ResponseProviders/ProxyAsyncResponseProvider.cs b/src/WireMock.Net/ResponseProviders/ProxyAsyncResponseProvider.cs
index f1283138..748a0822 100644
--- a/src/WireMock.Net/ResponseProviders/ProxyAsyncResponseProvider.cs
+++ b/src/WireMock.Net/ResponseProviders/ProxyAsyncResponseProvider.cs
@@ -1,26 +1,22 @@
using System;
using System.Threading.Tasks;
-using JetBrains.Annotations;
+using WireMock.Handlers;
using WireMock.Settings;
-using WireMock.Validation;
namespace WireMock.ResponseProviders
{
internal class ProxyAsyncResponseProvider : IResponseProvider
{
- private readonly Func> _responseMessageFunc;
- private readonly IProxyAndRecordSettings _settings;
+ private readonly Func> _responseMessageFunc;
+ private readonly IFluentMockServerSettings _settings;
- public ProxyAsyncResponseProvider([NotNull] Func> responseMessageFunc, [NotNull] IProxyAndRecordSettings settings)
+ public ProxyAsyncResponseProvider(Func> responseMessageFunc, IFluentMockServerSettings settings)
{
- Check.NotNull(responseMessageFunc, nameof(responseMessageFunc));
- Check.NotNull(settings, nameof(settings));
-
_responseMessageFunc = responseMessageFunc;
_settings = settings;
}
- public Task ProvideResponseAsync(RequestMessage requestMessage)
+ public Task ProvideResponseAsync(RequestMessage requestMessage, IFileSystemHandler fileSystemHandler)
{
return _responseMessageFunc(requestMessage, _settings);
}
diff --git a/src/WireMock.Net/Serialization/MappingConverter.cs b/src/WireMock.Net/Serialization/MappingConverter.cs
index 5f848b48..0a8f9010 100644
--- a/src/WireMock.Net/Serialization/MappingConverter.cs
+++ b/src/WireMock.Net/Serialization/MappingConverter.cs
@@ -28,7 +28,7 @@ namespace WireMock.Serialization
{
Guid = mapping.Guid,
Title = mapping.Title,
- Priority = mapping.Priority,
+ Priority = mapping.Priority != 0 ? mapping.Priority : (int?) null,
Scenario = mapping.Scenario,
WhenStateIs = mapping.ExecutionConditionState,
SetStateTo = mapping.NextState,
@@ -66,7 +66,7 @@ namespace WireMock.Serialization
Params = paramsMatchers != null && paramsMatchers.Any() ? paramsMatchers.Select(pm => new ParamModel
{
Name = pm.Key,
- IgnoreCase = pm.IgnoreCase,
+ IgnoreCase = pm.IgnoreCase == true ? true : (bool?) null,
Matchers = MatcherMapper.Map(pm.Matchers)
}).ToList() : null,
@@ -92,7 +92,7 @@ namespace WireMock.Serialization
mappingModel.Response.BodyAsBytes = null;
mappingModel.Response.BodyAsFile = null;
mappingModel.Response.BodyAsFileIsCached = null;
- mappingModel.Response.UseTransformer = false;
+ mappingModel.Response.UseTransformer = null;
mappingModel.Response.BodyEncoding = null;
mappingModel.Response.ProxyUrl = response.ProxyUrl;
}
@@ -101,7 +101,10 @@ namespace WireMock.Serialization
mappingModel.Response.BodyDestination = response.ResponseMessage.BodyDestination;
mappingModel.Response.StatusCode = response.ResponseMessage.StatusCode;
mappingModel.Response.Headers = Map(response.ResponseMessage.Headers);
- mappingModel.Response.UseTransformer = response.UseTransformer;
+ if (response.UseTransformer)
+ {
+ mappingModel.Response.UseTransformer = response.UseTransformer;
+ }
if (response.ResponseMessage.BodyData != null)
{
@@ -113,7 +116,10 @@ namespace WireMock.Serialization
case BodyType.Json:
mappingModel.Response.BodyAsJson = response.ResponseMessage.BodyData.BodyAsJson;
- mappingModel.Response.BodyAsJsonIndented = response.ResponseMessage.BodyData.BodyAsJsonIndented;
+ if (response.ResponseMessage.BodyData.BodyAsJsonIndented == true)
+ {
+ mappingModel.Response.BodyAsJsonIndented = response.ResponseMessage.BodyData.BodyAsJsonIndented;
+ }
break;
case BodyType.Bytes:
diff --git a/src/WireMock.Net/Server/FluentMockServer.Admin.cs b/src/WireMock.Net/Server/FluentMockServer.Admin.cs
index 1da20c3c..971c655b 100644
--- a/src/WireMock.Net/Server/FluentMockServer.Admin.cs
+++ b/src/WireMock.Net/Server/FluentMockServer.Admin.cs
@@ -43,7 +43,7 @@ namespace WireMock.Server
private readonly RegexMatcher _adminMappingsGuidPathMatcher = new RegexMatcher(MatchBehaviour.AcceptOnMatch, @"^\/__admin\/mappings\/([0-9A-Fa-f]{8}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{12})$");
private readonly RegexMatcher _adminRequestsGuidPathMatcher = new RegexMatcher(MatchBehaviour.AcceptOnMatch, @"^\/__admin\/requests\/([0-9A-Fa-f]{8}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{12})$");
- private readonly JsonSerializerSettings _settings = new JsonSerializerSettings
+ private readonly JsonSerializerSettings _jsonSerializerSettings = new JsonSerializerSettings
{
Formatting = Formatting.Indented,
NullValueHandling = NullValueHandling.Ignore
@@ -242,23 +242,23 @@ namespace WireMock.Server
respondProvider.AtPriority(ProxyPriority);
}
- respondProvider.RespondWith(new ProxyAsyncResponseProvider(ProxyAndRecordAsync, settings.ProxyAndRecordSettings));
+ respondProvider.RespondWith(new ProxyAsyncResponseProvider(ProxyAndRecordAsync, settings));
}
- private async Task ProxyAndRecordAsync(RequestMessage requestMessage, IProxyAndRecordSettings settings)
+ private async Task ProxyAndRecordAsync(RequestMessage requestMessage, IFluentMockServerSettings settings)
{
var requestUri = new Uri(requestMessage.Url);
- var proxyUri = new Uri(settings.Url);
+ var proxyUri = new Uri(settings.ProxyAndRecordSettings.Url);
var proxyUriWithRequestPathAndQuery = new Uri(proxyUri, requestUri.PathAndQuery);
var responseMessage = await HttpClientHelper.SendAsync(_httpClientForProxy, requestMessage, proxyUriWithRequestPathAndQuery.AbsoluteUri);
- if (settings.SaveMapping)
+ if (settings.ProxyAndRecordSettings.SaveMapping)
{
- var mapping = ToMapping(requestMessage, responseMessage, settings.BlackListedHeaders ?? new string[] { });
+ var mapping = ToMapping(requestMessage, responseMessage, settings.ProxyAndRecordSettings.BlackListedHeaders ?? new string[] { });
_options.Mappings.TryAdd(mapping.Guid, mapping);
- if (settings.SaveMappingToFile)
+ if (settings.ProxyAndRecordSettings.SaveMappingToFile)
{
SaveMappingToFile(mapping);
}
@@ -302,7 +302,7 @@ namespace WireMock.Server
var response = Response.Create(responseMessage);
- return new Mapping(Guid.NewGuid(), string.Empty, null, request, response, 0, null, null, null);
+ return new Mapping(Guid.NewGuid(), string.Empty, null, _fileSystemHandler, request, response, 0, null, null, null);
}
#endregion
@@ -407,7 +407,7 @@ namespace WireMock.Server
_logger.Info("Saving Mapping file {0}", filename);
- _fileSystemHandler.WriteMappingFile(path, JsonConvert.SerializeObject(model, _settings));
+ _fileSystemHandler.WriteMappingFile(path, JsonConvert.SerializeObject(model, _jsonSerializerSettings));
}
private static string SanitizeFileName(string name, char replaceChar = '_')
@@ -471,7 +471,7 @@ namespace WireMock.Server
var responseBuilder = InitResponseBuilder(mappingModel.Response);
- var respondProvider = Given(requestBuilder);
+ var respondProvider = Given(requestBuilder, mappingModel.SaveToFile == true);
if (guid != null)
{
@@ -722,7 +722,7 @@ namespace WireMock.Server
responseBuilder = responseBuilder.WithDelay(responseModel.Delay.Value);
}
- if (responseModel.UseTransformer)
+ if (responseModel.UseTransformer == true)
{
responseBuilder = responseBuilder.WithTransformer();
}
@@ -793,7 +793,7 @@ namespace WireMock.Server
BodyData = new BodyData
{
DetectedBodyType = BodyType.String,
- BodyAsString = JsonConvert.SerializeObject(result, keepNullValues ? _settingsIncludeNullValues : _settings)
+ BodyAsString = JsonConvert.SerializeObject(result, keepNullValues ? _settingsIncludeNullValues : _jsonSerializerSettings)
},
StatusCode = 200,
Headers = new Dictionary> { { HttpKnownHeaderNames.ContentType, new WireMockList(ContentTypeJson) } }
diff --git a/src/WireMock.Net/Server/FluentMockServer.cs b/src/WireMock.Net/Server/FluentMockServer.cs
index 6ac06198..c9ba2d92 100644
--- a/src/WireMock.Net/Server/FluentMockServer.cs
+++ b/src/WireMock.Net/Server/FluentMockServer.cs
@@ -203,7 +203,7 @@ namespace WireMock.Server
Urls = new[] { $"{(settings.UseSSL == true ? "https" : "http")}://localhost:{port}" };
}
- _options.FileSystemHandler = settings.FileSystemHandler;
+ _options.FileSystemHandler = _fileSystemHandler;
_options.PreWireMockMiddlewareInit = settings.PreWireMockMiddlewareInit;
_options.PostWireMockMiddlewareInit = settings.PostWireMockMiddlewareInit;
_options.Logger = _logger;
@@ -430,14 +430,15 @@ namespace WireMock.Server
/// The given.
///
/// The request matcher.
+ /// Optional boolean to indicate if this mapping should be saved as static mapping file.
/// The .
[PublicAPI]
- public IRespondWithAProvider Given(IRequestMatcher requestMatcher)
+ public IRespondWithAProvider Given(IRequestMatcher requestMatcher, bool saveToFile = false)
{
- return new RespondWithAProvider(RegisterMapping, requestMatcher);
+ return new RespondWithAProvider(RegisterMapping, requestMatcher, _fileSystemHandler, saveToFile);
}
- private void RegisterMapping(IMapping mapping)
+ private void RegisterMapping(IMapping mapping, bool saveToFile)
{
// Check a mapping exists with the same Guid, if so, replace it.
if (_options.Mappings.ContainsKey(mapping.Guid))
@@ -448,6 +449,11 @@ namespace WireMock.Server
{
_options.Mappings.TryAdd(mapping.Guid, mapping);
}
+
+ if (saveToFile)
+ {
+ SaveMappingToFile(mapping);
+ }
}
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net/Server/RespondWithAProvider.cs b/src/WireMock.Net/Server/RespondWithAProvider.cs
index b4325d69..1db7db6b 100644
--- a/src/WireMock.Net/Server/RespondWithAProvider.cs
+++ b/src/WireMock.Net/Server/RespondWithAProvider.cs
@@ -1,4 +1,5 @@
using System;
+using WireMock.Handlers;
using WireMock.Matchers.Request;
using WireMock.ResponseProviders;
@@ -17,6 +18,8 @@ namespace WireMock.Server
private string _scenario;
private readonly RegistrationCallback _registrationCallback;
private readonly IRequestMatcher _requestMatcher;
+ private readonly IFileSystemHandler _fileSystemHandler;
+ private readonly bool _saveToFile;
public Guid Guid { get; private set; } = Guid.NewGuid();
@@ -25,10 +28,14 @@ namespace WireMock.Server
///
/// The registration callback.
/// The request matcher.
- public RespondWithAProvider(RegistrationCallback registrationCallback, IRequestMatcher requestMatcher)
+ /// The fileSystemHandler.
+ /// Optional boolean to indicate if this mapping should be saved as static mapping file.
+ public RespondWithAProvider(RegistrationCallback registrationCallback, IRequestMatcher requestMatcher, IFileSystemHandler fileSystemHandler, bool saveToFile = false)
{
_registrationCallback = registrationCallback;
_requestMatcher = requestMatcher;
+ _fileSystemHandler = fileSystemHandler;
+ _saveToFile = saveToFile;
}
///
@@ -37,7 +44,7 @@ namespace WireMock.Server
/// The provider.
public void RespondWith(IResponseProvider provider)
{
- _registrationCallback(new Mapping(Guid, _title, _path, _requestMatcher, provider, _priority, _scenario, _executionConditionState, _nextState));
+ _registrationCallback(new Mapping(Guid, _title, _path, _fileSystemHandler, _requestMatcher, provider, _priority, _scenario, _executionConditionState, _nextState), _saveToFile);
}
///
diff --git a/src/WireMock.Net/Settings/FluentMockServerSettings.cs b/src/WireMock.Net/Settings/FluentMockServerSettings.cs
index 9859ae58..ab02e13d 100644
--- a/src/WireMock.Net/Settings/FluentMockServerSettings.cs
+++ b/src/WireMock.Net/Settings/FluentMockServerSettings.cs
@@ -82,6 +82,6 @@ namespace WireMock.Settings
///
[PublicAPI]
[JsonIgnore]
- public IFileSystemHandler FileSystemHandler { get; set; } = new LocalFileSystemHandler();
+ public IFileSystemHandler FileSystemHandler { get; set; }
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/FluentMockServerTests.Admin.cs b/test/WireMock.Net.Tests/FluentMockServerTests.Admin.cs
index 471d1b85..06b6a30a 100644
--- a/test/WireMock.Net.Tests/FluentMockServerTests.Admin.cs
+++ b/test/WireMock.Net.Tests/FluentMockServerTests.Admin.cs
@@ -375,5 +375,32 @@ namespace WireMock.Net.Tests
fileMock.Verify(f => f.GetMappingFolder(), Times.Once);
fileMock.Verify(f => f.FolderExists(It.IsAny()), Times.Once);
}
+
+ [Fact]
+ public void FluentMockServer_Admin_AddMappingsAndSaveToFile()
+ {
+ // Assign
+ string guid = "791a3f31-6946-aaaa-8e6f-0237c7442222";
+ var staticMappingHandlerMock = new Mock();
+ staticMappingHandlerMock.Setup(m => m.GetMappingFolder()).Returns("folder");
+ staticMappingHandlerMock.Setup(m => m.FolderExists(It.IsAny())).Returns(true);
+ staticMappingHandlerMock.Setup(m => m.WriteMappingFile(It.IsAny(), It.IsAny()));
+
+ var server = FluentMockServer.Start(new FluentMockServerSettings
+ {
+ FileSystemHandler = staticMappingHandlerMock.Object
+ });
+
+ // Act
+ server
+ .Given(Request.Create().WithPath($"/foo_{Guid.NewGuid()}"), true)
+ .WithGuid(guid)
+ .RespondWith(Response.Create().WithBody("post and save test"));
+
+ // Assert and Verify
+ staticMappingHandlerMock.Verify(m => m.GetMappingFolder(), Times.Once);
+ staticMappingHandlerMock.Verify(m => m.FolderExists("folder"), Times.Once);
+ staticMappingHandlerMock.Verify(m => m.WriteMappingFile(Path.Combine("folder", guid + ".json"), It.IsAny()), Times.Once);
+ }
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseCreateTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseCreateTests.cs
index 54bbbc69..aa0d0eb0 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseCreateTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseCreateTests.cs
@@ -1,5 +1,7 @@
using System.Threading.Tasks;
+using Moq;
using NFluent;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using Xunit;
@@ -8,6 +10,8 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseCreateTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
+
[Fact]
public async Task Response_Create_Func()
{
@@ -18,7 +22,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create(() => responseMessage);
// Act
- var providedResponse = await response.ProvideResponseAsync(request);
+ var providedResponse = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(providedResponse).Equals(responseMessage);
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithBodyTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithBodyTests.cs
index 4328fd4c..2080c515 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithBodyTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithBodyTests.cs
@@ -1,17 +1,20 @@
-using System;
+using Moq;
+using Newtonsoft.Json.Linq;
+using NFluent;
+using System;
using System.Text;
using System.Threading.Tasks;
-using NFluent;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Util;
using Xunit;
-using Newtonsoft.Json.Linq;
namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithBodyTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
private const string ClientIp = "::1";
[Fact]
@@ -28,7 +31,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBody(new byte[] { 48, 49 }, BodyDestinationFormat.String, Encoding.ASCII);
// act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// then
Check.That(responseMessage.BodyData.BodyAsString).Equals("01");
@@ -50,7 +53,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBody(new byte[] { 48, 49 }, BodyDestinationFormat.SameAsSource, Encoding.ASCII);
// act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// then
Check.That(responseMessage.BodyData.BodyAsBytes).ContainsExactly(new byte[] { 48, 49 });
@@ -72,7 +75,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBody("test", null, Encoding.ASCII);
// act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// then
Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
@@ -94,7 +97,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBodyAsJson(x, Encoding.ASCII);
// act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// then
Check.That(responseMessage.BodyData.BodyAsJson).Equals(x);
@@ -116,7 +119,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBodyAsJson(x, true);
// act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// then
Check.That(responseMessage.BodyData.BodyAsJson).Equals(x);
@@ -132,7 +135,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBody("r", BodyDestinationFormat.SameAsSource, Encoding.ASCII);
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsBytes).IsNull();
@@ -150,7 +153,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBody("r", BodyDestinationFormat.Bytes, Encoding.ASCII);
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).IsNull();
@@ -168,7 +171,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBody("{ \"value\": 42 }", BodyDestinationFormat.Json, Encoding.ASCII);
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).IsNull();
@@ -190,7 +193,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithBody(req => $"path: {req.Path}");
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo("path: /test");
@@ -201,7 +204,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
Check.That(responseMessage.Headers["H1"].ToString()).IsEqualTo("X1");
Check.That(responseMessage.Headers["H2"].ToString()).IsEqualTo("X2");
}
-
+
[Fact]
public async Task Response_ProvideResponse_WithJsonBodyAndTransform_Func()
{
@@ -211,15 +214,15 @@ 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()
.WithStatusCode(200)
.WithBodyAsJson(JObject.Parse("{ \"id\": \"{{request.query.id}}\" }"))
.WithTransformer();
// Act
- var response1Message = await response.ProvideResponseAsync(request1);
- var response2Message = await response.ProvideResponseAsync(request2);
+ var response1Message = await response.ProvideResponseAsync(request1, _fileSystemHandlerMock.Object);
+ var response2Message = await response.ProvideResponseAsync(request2, _fileSystemHandlerMock.Object);
// Assert
Check.That(((JToken)response1Message.BodyData.BodyAsJson).SelectToken("id")?.Value()).IsEqualTo(request1Id);
@@ -237,13 +240,13 @@ namespace WireMock.Net.Tests.ResponseBuilders
public async Task Response_ProvideResponse_WithBodyAsFile()
{
var fileContents = "testFileContents" + Guid.NewGuid();
- var bodyDataAsFile = new BodyData {BodyAsFile = fileContents};
+ var bodyDataAsFile = new BodyData { BodyAsFile = fileContents };
var request1 = new RequestMessage(new UrlDetails("http://localhost/__admin/files/filename.txt"), "PUT", ClientIp, bodyDataAsFile);
var response = Response.Create().WithStatusCode(200).WithBody(fileContents);
- var provideResponseAsync = await response.ProvideResponseAsync(request1);
+ var provideResponseAsync = await response.ProvideResponseAsync(request1, _fileSystemHandlerMock.Object);
Check.That(provideResponseAsync.StatusCode).IsEqualTo(200);
Check.That(provideResponseAsync.BodyData.BodyAsString).Contains(fileContents);
@@ -259,7 +262,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithStatusCode(200).WithBody(fileContents);
- var provideResponseAsync = await response.ProvideResponseAsync(request1);
+ var provideResponseAsync = await response.ProvideResponseAsync(request1, _fileSystemHandlerMock.Object);
Check.That(provideResponseAsync.StatusCode).IsEqualTo(200);
Check.That(provideResponseAsync.BodyData.BodyAsString).Contains(fileContents);
@@ -275,7 +278,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithStatusCode(200).WithBody("File deleted.");
- var provideResponseAsync = await response.ProvideResponseAsync(request1);
+ var provideResponseAsync = await response.ProvideResponseAsync(request1, _fileSystemHandlerMock.Object);
Check.That(provideResponseAsync.StatusCode).IsEqualTo(200);
Check.That(provideResponseAsync.BodyData.BodyAsString).Contains("File deleted.");
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs
index 910717c3..76912fbc 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithCallbackTests.cs
@@ -1,5 +1,7 @@
-using System.Threading.Tasks;
+using Moq;
using NFluent;
+using System.Threading.Tasks;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Util;
@@ -9,6 +11,8 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithCallbackTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
+
[Fact]
public async Task Response_WithCallback()
{
@@ -17,7 +21,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithCallback(req => new ResponseMessage { BodyData = new BodyData { DetectedBodyType = BodyType.String, BodyAsString = req.Path + "Bar" }, StatusCode = 302 });
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo("/fooBar");
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsFileTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsFileTests.cs
index 27eff07b..05f387d1 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsFileTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsFileTests.cs
@@ -6,7 +6,6 @@ using System.Threading.Tasks;
using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
-using WireMock.Transformers;
using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders
@@ -35,11 +34,8 @@ namespace WireMock.Net.Tests.ResponseBuilders
})
.WithTransformer();
- response.SetPrivateFieldValue("_fileSystemHandler", _filesystemHandlerMock.Object);
- response.SetPrivateFieldValue("_responseMessageTransformer", new ResponseMessageTransformer(_filesystemHandlerMock.Object));
-
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _filesystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -63,11 +59,8 @@ namespace WireMock.Net.Tests.ResponseBuilders
})
.WithTransformer();
- response.SetPrivateFieldValue("_fileSystemHandler", _filesystemHandlerMock.Object);
- response.SetPrivateFieldValue("_responseMessageTransformer", new ResponseMessageTransformer(_filesystemHandlerMock.Object));
-
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _filesystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -92,7 +85,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request)).Throws();
+ Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _filesystemHandlerMock.Object)).Throws();
// Verify
_filesystemHandlerMock.Verify(fs => fs.ReadResponseBodyAsString(It.IsAny()), Times.Never);
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsJsonPathTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsJsonPathTests.cs
index 88809e1d..f0bda9aa 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsJsonPathTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsJsonPathTests.cs
@@ -1,7 +1,9 @@
using System;
using System.Threading.Tasks;
+using Moq;
using Newtonsoft.Json.Linq;
using NFluent;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Util;
@@ -11,6 +13,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsJsonPathTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
private const string ClientIp = "::1";
[Fact]
@@ -60,7 +63,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -86,7 +89,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -140,7 +143,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// 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}}}");
@@ -193,7 +196,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// 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}}}");
@@ -246,7 +249,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%");
@@ -299,7 +302,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%");
@@ -328,7 +331,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request)).Throws();
+ Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object)).Throws();
}
}
}
\ 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 f43e8110..4043bc46 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsLinqTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsLinqTests.cs
@@ -1,7 +1,9 @@
-using System;
-using System.Threading.Tasks;
+using Moq;
using Newtonsoft.Json.Linq;
using NFluent;
+using System;
+using System.Threading.Tasks;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Util;
@@ -11,11 +13,13 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsLinqTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
+
[Fact]
public async Task Response_ProvideResponse_Handlebars_Linq1_String0()
{
// Assign
- var body = new BodyData { };
+ var body = new BodyData();
var request = new RequestMessage(new UrlDetails("http://localhost:1234/pathtest"), "POST", "::1", body);
@@ -25,7 +29,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -55,7 +59,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -85,7 +89,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -115,7 +119,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -140,14 +144,14 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request)).Throws();
+ Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object)).Throws();
}
[Fact]
public void Response_ProvideResponse_Handlebars_Linq1_Throws_ArgumentNullException()
{
// Assign
- var body = new BodyData { };
+ var body = new BodyData();
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
@@ -156,14 +160,14 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request)).Throws();
+ Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object)).Throws();
}
[Fact]
public void Response_ProvideResponse_Handlebars_Linq1_Throws_ArgumentException()
{
// Assign
- var body = new BodyData { };
+ var body = new BodyData();
var request = new RequestMessage(new UrlDetails("http://localhost:1234"), "POST", "::1", body);
@@ -172,7 +176,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request)).Throws();
+ Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object)).Throws();
}
[Fact]
@@ -196,7 +200,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -224,7 +228,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRandomTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRandomTests.cs
index 4d119153..aa78f166 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRandomTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRandomTests.cs
@@ -1,8 +1,9 @@
-using System;
-using System.Linq;
+using System.Linq;
using System.Threading.Tasks;
+using Moq;
using Newtonsoft.Json.Linq;
using NFluent;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using Xunit;
@@ -11,6 +12,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsRandomTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
private const string ClientIp = "::1";
[Fact]
@@ -30,7 +32,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -53,7 +55,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -75,7 +77,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -99,7 +101,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -121,7 +123,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRegexTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRegexTests.cs
index 4f98d351..e9365016 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRegexTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsRegexTests.cs
@@ -1,6 +1,8 @@
using System;
using System.Threading.Tasks;
+using Moq;
using NFluent;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Util;
@@ -10,6 +12,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsRegexTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
private const string ClientIp = "::1";
[Fact]
@@ -25,7 +28,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("abc");
@@ -44,7 +47,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("");
@@ -63,7 +66,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("d");
@@ -82,7 +85,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("5000-https");
@@ -101,7 +104,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("");
@@ -120,7 +123,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("x");
@@ -139,7 +142,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act and Assert
- Check.ThatAsyncCode(() => response.ProvideResponseAsync(request)).Throws();
+ Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object)).Throws();
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs
index fad6d28d..57ca8d1d 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsTests.cs
@@ -2,8 +2,10 @@
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
+using Moq;
using Newtonsoft.Json;
using NFluent;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Util;
@@ -18,6 +20,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
private const string ClientIp = "::1";
[Fact]
@@ -38,7 +41,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(JsonConvert.SerializeObject(responseMessage.BodyData.BodyAsJson)).Equals("{\"x\":\"test /foo_object\"}");
@@ -60,7 +63,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt");
@@ -78,7 +81,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("http://localhost/a/b http://localhost/wiremock/a/b /a/b /wiremock/a/b");
@@ -96,7 +99,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("a wiremock");
@@ -118,7 +121,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("test keya=1 idx=1 idx=2 keyb=5");
@@ -138,7 +141,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithHeader("x", "{{request.headers.Content-Type}}").WithBody("test").WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
@@ -160,7 +163,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithHeader("x", "{{request.headers.Content-Type}}", "{{request.url}}").WithBody("test").WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
@@ -185,7 +188,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("test http://localhost:1234 1234 http localhost");
@@ -209,7 +212,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(JsonConvert.SerializeObject(responseMessage.BodyData.BodyAsJson)).Equals("[\"first\",\"/foo_array\",\"test 1\",\"test 2\",\"last\"]");
@@ -226,7 +229,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithBodyFromFile(@"c:\\{{request.query.MyUniqueNumber}}\test.xml"); // why use a \\ here ?
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
@@ -253,7 +256,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithBodyFromFile(@"c:\\{{JsonPath.SelectToken request.body " + jsonPath + "}}\\test.json"); // why use a \\ here ?
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsFile).Equals(@"c:\1\test.json");
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXegerTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXegerTests.cs
index abca4648..869f2d75 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXegerTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHandlebarsXegerTests.cs
@@ -1,6 +1,8 @@
using System.Threading.Tasks;
+using Moq;
using Newtonsoft.Json.Linq;
using NFluent;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using Xunit;
@@ -9,6 +11,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsXegerTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
private const string ClientIp = "::1";
[Fact]
@@ -26,7 +29,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -49,7 +52,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHeadersTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHeadersTests.cs
index ad596373..448591d8 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHeadersTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithHeadersTests.cs
@@ -1,6 +1,8 @@
using System.Collections.Generic;
using System.Threading.Tasks;
+using Moq;
using NFluent;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Util;
@@ -10,6 +12,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHeadersTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
private const string ClientIp = "::1";
[Theory]
@@ -23,7 +26,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
IResponseBuilder builder = Response.Create().WithHeader(headerName, headerValue);
// Act
- var response = await builder.ProvideResponseAsync(requestMock);
+ var response = await builder.ProvideResponseAsync(requestMock, _fileSystemHandlerMock.Object);
// Assert
Check.That(response.Headers[headerName].ToString()).Equals(headerValue);
@@ -39,7 +42,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
IResponseBuilder builder = Response.Create().WithHeader(headerName, headerValues);
// Act
- var response = await builder.ProvideResponseAsync(requestMock);
+ var response = await builder.ProvideResponseAsync(requestMock, _fileSystemHandlerMock.Object);
// Assert
Check.That(response.Headers[headerName].ToArray()).Equals(headerValues);
@@ -54,7 +57,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithHeaders(headers);
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.Headers["h"]).ContainsExactly("x");
@@ -69,7 +72,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithHeaders(headers);
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.Headers["h"]).ContainsExactly("x");
@@ -84,7 +87,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithHeaders(headers);
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.Headers["h"]).ContainsExactly("x");
diff --git a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithProxyTests.cs b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithProxyTests.cs
index 28b3aafb..a920f27c 100644
--- a/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithProxyTests.cs
+++ b/test/WireMock.Net.Tests/ResponseBuilders/ResponseWithProxyTests.cs
@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
+using Moq;
using NFluent;
+using WireMock.Handlers;
using WireMock.Models;
using WireMock.RequestBuilders;
using WireMock.ResponseBuilders;
@@ -13,6 +15,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithProxyTests : IDisposable
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
private readonly FluentMockServer _server;
private readonly Guid _guid;
@@ -34,7 +37,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithProxy(_server.Urls[0]);
// Act
- var responseMessage = await response.ProvideResponseAsync(request);
+ var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo("{\"p\":42}");
diff --git a/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs b/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs
index 1a351e5b..ebe68c33 100644
--- a/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs
+++ b/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs
@@ -1,5 +1,7 @@
-using System;
-using NFluent;
+using FluentAssertions;
+using Moq;
+using System;
+using WireMock.Handlers;
using WireMock.RequestBuilders;
using WireMock.ResponseBuilders;
using WireMock.Serialization;
@@ -9,19 +11,41 @@ namespace WireMock.Net.Tests.Serialization
{
public class MappingConverterTests
{
+ private readonly Mock _fileSystemHandlerMock = new Mock();
+
[Fact]
- public void MappingConverter_ToMappingModel()
+ public void ToMappingModel()
{
// Assign
var request = Request.Create();
var response = Response.Create();
- var mapping = new Mapping(Guid.NewGuid(), "", null, request, response, 0, null, null, null);
+ var mapping = new Mapping(Guid.NewGuid(), "", null, _fileSystemHandlerMock.Object, request, response, 0, null, null, null);
// Act
var model = MappingConverter.ToMappingModel(mapping);
// Assert
- Check.That(model).IsNotNull();
+ model.Should().NotBeNull();
+ model.Priority.Should().BeNull();
+ model.Response.BodyAsJsonIndented.Should().BeNull();
+ model.Response.UseTransformer.Should().BeNull();
+ }
+
+ [Fact]
+ public void ToMappingModel_WithPriority_ReturnsPriority()
+ {
+ // Assign
+ var request = Request.Create();
+ var response = Response.Create().WithBodyAsJson(new { x = "x" }).WithTransformer();
+ var mapping = new Mapping(Guid.NewGuid(), "", null, _fileSystemHandlerMock.Object, request, response, 42, null, null, null);
+
+ // Act
+ var model = MappingConverter.ToMappingModel(mapping);
+
+ // Assert
+ model.Should().NotBeNull();
+ model.Priority.Should().Be(42);
+ model.Response.UseTransformer.Should().BeTrue();
}
}
}
\ No newline at end of file