Handlebars Extension (#286)

* wip

* HandlebarsRegistrationCallback

* HandlebarsContextFactoryTests

* 1.0.21.0

* fix sonar

* LocalFileSystemHandler

* readme

* Fix System.IO.IOException
This commit is contained in:
Stef Heyenrath
2019-07-03 18:37:22 +02:00
committed by GitHub
parent 653e03fcd9
commit 93682c9bbf
37 changed files with 366 additions and 208 deletions

View File

@@ -1,16 +1,16 @@
using System.Threading.Tasks;
using Moq;
using Moq;
using NFluent;
using WireMock.Handlers;
using System.Threading.Tasks;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseCreateTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
[Fact]
public async Task Response_Create_Func()
@@ -22,7 +22,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create(() => responseMessage);
// Act
var providedResponse = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var providedResponse = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(providedResponse).Equals(responseMessage);

View File

@@ -4,9 +4,9 @@ using NFluent;
using System;
using System.Text;
using System.Threading.Tasks;
using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using WireMock.Util;
using Xunit;
@@ -14,7 +14,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithBodyTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
private const string ClientIp = "::1";
[Fact]
@@ -31,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, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// then
Check.That(responseMessage.BodyData.BodyAsString).Equals("01");
@@ -53,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, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// then
Check.That(responseMessage.BodyData.BodyAsBytes).ContainsExactly(new byte[] { 48, 49 });
@@ -75,7 +75,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBody("test", null, Encoding.ASCII);
// act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// then
Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
@@ -97,7 +97,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBodyAsJson(x, Encoding.ASCII);
// act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// then
Check.That(responseMessage.BodyData.BodyAsJson).Equals(x);
@@ -119,7 +119,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithBodyAsJson(x, true);
// act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// then
Check.That(responseMessage.BodyData.BodyAsJson).Equals(x);
@@ -135,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, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsBytes).IsNull();
@@ -153,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, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).IsNull();
@@ -171,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, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).IsNull();
@@ -193,7 +193,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithBody(req => $"path: {req.Path}");
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo("path: /test");
@@ -221,8 +221,8 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var response1Message = await response.ProvideResponseAsync(request1, _fileSystemHandlerMock.Object);
var response2Message = await response.ProvideResponseAsync(request2, _fileSystemHandlerMock.Object);
var response1Message = await response.ProvideResponseAsync(request1, _settingsMock.Object);
var response2Message = await response.ProvideResponseAsync(request2, _settingsMock.Object);
// Assert
Check.That(((JToken)response1Message.BodyData.BodyAsJson).SelectToken("id")?.Value<int>()).IsEqualTo(request1Id);
@@ -246,7 +246,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithStatusCode(200).WithBody(fileContents);
var provideResponseAsync = await response.ProvideResponseAsync(request1, _fileSystemHandlerMock.Object);
var provideResponseAsync = await response.ProvideResponseAsync(request1, _settingsMock.Object);
Check.That(provideResponseAsync.StatusCode).IsEqualTo(200);
Check.That(provideResponseAsync.BodyData.BodyAsString).Contains(fileContents);
@@ -262,7 +262,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithStatusCode(200).WithBody(fileContents);
var provideResponseAsync = await response.ProvideResponseAsync(request1, _fileSystemHandlerMock.Object);
var provideResponseAsync = await response.ProvideResponseAsync(request1, _settingsMock.Object);
Check.That(provideResponseAsync.StatusCode).IsEqualTo(200);
Check.That(provideResponseAsync.BodyData.BodyAsString).Contains(fileContents);
@@ -278,7 +278,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithStatusCode(200).WithBody("File deleted.");
var provideResponseAsync = await response.ProvideResponseAsync(request1, _fileSystemHandlerMock.Object);
var provideResponseAsync = await response.ProvideResponseAsync(request1, _settingsMock.Object);
Check.That(provideResponseAsync.StatusCode).IsEqualTo(200);
Check.That(provideResponseAsync.BodyData.BodyAsString).Contains("File deleted.");

View File

@@ -1,9 +1,9 @@
using Moq;
using NFluent;
using System.Threading.Tasks;
using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using WireMock.Util;
using Xunit;
@@ -11,7 +11,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithCallbackTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
[Fact]
public async Task Response_WithCallback()
@@ -21,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, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo("/fooBar");

View File

@@ -6,6 +6,7 @@ using System.Threading.Tasks;
using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders
@@ -13,12 +14,16 @@ namespace WireMock.Net.Tests.ResponseBuilders
public class ResponseWithHandlebarsFileTests
{
private readonly Mock<IFileSystemHandler> _filesystemHandlerMock;
private readonly Mock<IFluentMockServerSettings> _settingsMock;
private const string ClientIp = "::1";
public ResponseWithHandlebarsFileTests()
{
_filesystemHandlerMock = new Mock<IFileSystemHandler>(MockBehavior.Strict);
_filesystemHandlerMock.Setup(fs => fs.ReadResponseBodyAsString(It.IsAny<string>())).Returns("abc");
_settingsMock = new Mock<IFluentMockServerSettings>();
_settingsMock.SetupGet(s => s.FileSystemHandler).Returns(_filesystemHandlerMock.Object);
}
[Fact]
@@ -35,7 +40,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _filesystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -60,7 +65,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _filesystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -85,7 +90,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _filesystemHandlerMock.Object)).Throws<ArgumentOutOfRangeException>();
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settingsMock.Object)).Throws<ArgumentOutOfRangeException>();
// Verify
_filesystemHandlerMock.Verify(fs => fs.ReadResponseBodyAsString(It.IsAny<string>()), Times.Never);

View File

@@ -1,11 +1,11 @@
using System;
using System.Threading.Tasks;
using Moq;
using Moq;
using Newtonsoft.Json.Linq;
using NFluent;
using WireMock.Handlers;
using System;
using System.Threading.Tasks;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using WireMock.Util;
using Xunit;
@@ -13,7 +13,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsJsonPathTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
private const string ClientIp = "::1";
[Fact]
@@ -63,7 +63,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -89,7 +89,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -143,7 +143,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.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}}}");
@@ -196,7 +196,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.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}}}");
@@ -249,7 +249,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%");
@@ -302,7 +302,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("%0:Anvil%%1:Elbow Grease%");
@@ -331,7 +331,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object)).Throws<ArgumentNullException>();
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settingsMock.Object)).Throws<ArgumentNullException>();
}
}
}

View File

@@ -3,9 +3,9 @@ using Newtonsoft.Json.Linq;
using NFluent;
using System;
using System.Threading.Tasks;
using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using WireMock.Util;
using Xunit;
@@ -13,7 +13,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsLinqTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
[Fact]
public async Task Response_ProvideResponse_Handlebars_Linq1_String0()
@@ -29,7 +29,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -59,7 +59,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -89,7 +89,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -119,7 +119,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -144,7 +144,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object)).Throws<NotSupportedException>();
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settingsMock.Object)).Throws<NotSupportedException>();
}
[Fact]
@@ -160,7 +160,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object)).Throws<ArgumentNullException>();
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settingsMock.Object)).Throws<ArgumentNullException>();
}
[Fact]
@@ -176,7 +176,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object)).Throws<ArgumentException>();
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settingsMock.Object)).Throws<ArgumentException>();
}
[Fact]
@@ -200,7 +200,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -228,7 +228,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);

View File

@@ -1,18 +1,18 @@
using System.Linq;
using System.Threading.Tasks;
using Moq;
using Moq;
using Newtonsoft.Json.Linq;
using NFluent;
using WireMock.Handlers;
using System.Linq;
using System.Threading.Tasks;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsRandomTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
private const string ClientIp = "::1";
[Fact]
@@ -32,7 +32,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -55,7 +55,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -77,7 +77,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -101,7 +101,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -123,7 +123,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);

View File

@@ -1,10 +1,10 @@
using System;
using System.Threading.Tasks;
using Moq;
using Moq;
using NFluent;
using WireMock.Handlers;
using System;
using System.Threading.Tasks;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using WireMock.Util;
using Xunit;
@@ -12,7 +12,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsRegexTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
private const string ClientIp = "::1";
[Fact]
@@ -28,7 +28,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("abc");
@@ -47,7 +47,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("");
@@ -66,7 +66,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("d");
@@ -85,7 +85,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("5000-https");
@@ -104,7 +104,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("");
@@ -123,7 +123,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("x");
@@ -142,7 +142,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act and Assert
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object)).Throws<NotSupportedException>();
Check.ThatAsyncCode(() => response.ProvideResponseAsync(request, _settingsMock.Object)).Throws<NotSupportedException>();
}
}
}

View File

@@ -5,9 +5,9 @@ using System.Threading.Tasks;
using Moq;
using Newtonsoft.Json;
using NFluent;
using WireMock.Handlers;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using WireMock.Util;
using Xunit;
#if NET452
@@ -20,7 +20,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
private const string ClientIp = "::1";
[Fact]
@@ -41,7 +41,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(JsonConvert.SerializeObject(responseMessage.BodyData.BodyAsJson)).Equals("{\"x\":\"test /foo_object\"}");
@@ -63,7 +63,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("test http://localhost/foo /foo POSt");
@@ -81,7 +81,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("http://localhost/a/b http://localhost/wiremock/a/b /a/b /wiremock/a/b");
@@ -99,7 +99,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("a wiremock");
@@ -121,7 +121,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("test keya=1 idx=1 idx=2 keyb=5");
@@ -141,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, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
@@ -163,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, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("test");
@@ -188,7 +188,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).Equals("test http://localhost:1234 1234 http localhost");
@@ -212,7 +212,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(JsonConvert.SerializeObject(responseMessage.BodyData.BodyAsJson)).Equals("[\"first\",\"/foo_array\",\"test 1\",\"test 2\",\"last\"]");
@@ -229,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, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsFile).Equals(@"c:\1\test.xml");
@@ -256,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, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsFile).Equals(@"c:\1\test.json");

View File

@@ -1,17 +1,17 @@
using System.Threading.Tasks;
using Moq;
using Moq;
using Newtonsoft.Json.Linq;
using NFluent;
using WireMock.Handlers;
using System.Threading.Tasks;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using Xunit;
namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHandlebarsXegerTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
private const string ClientIp = "::1";
[Fact]
@@ -29,7 +29,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);
@@ -52,7 +52,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
.WithTransformer();
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
JObject j = JObject.FromObject(responseMessage.BodyData.BodyAsJson);

View File

@@ -1,10 +1,10 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Moq;
using Moq;
using NFluent;
using WireMock.Handlers;
using System.Collections.Generic;
using System.Threading.Tasks;
using WireMock.Models;
using WireMock.ResponseBuilders;
using WireMock.Settings;
using WireMock.Util;
using Xunit;
@@ -12,7 +12,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithHeadersTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
private const string ClientIp = "::1";
[Theory]
@@ -26,7 +26,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
IResponseBuilder builder = Response.Create().WithHeader(headerName, headerValue);
// Act
var response = await builder.ProvideResponseAsync(requestMock, _fileSystemHandlerMock.Object);
var response = await builder.ProvideResponseAsync(requestMock, _settingsMock.Object);
// Assert
Check.That(response.Headers[headerName].ToString()).Equals(headerValue);
@@ -42,7 +42,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
IResponseBuilder builder = Response.Create().WithHeader(headerName, headerValues);
// Act
var response = await builder.ProvideResponseAsync(requestMock, _fileSystemHandlerMock.Object);
var response = await builder.ProvideResponseAsync(requestMock, _settingsMock.Object);
// Assert
Check.That(response.Headers[headerName].ToArray()).Equals(headerValues);
@@ -57,7 +57,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithHeaders(headers);
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.Headers["h"]).ContainsExactly("x");
@@ -72,7 +72,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithHeaders(headers);
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.Headers["h"]).ContainsExactly("x");
@@ -87,7 +87,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
var response = Response.Create().WithHeaders(headers);
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.Headers["h"]).ContainsExactly("x");

View File

@@ -1,13 +1,13 @@
using System;
using Moq;
using NFluent;
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;
using WireMock.Server;
using WireMock.Settings;
using WireMock.Util;
using Xunit;
@@ -15,7 +15,7 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
public class ResponseWithProxyTests : IDisposable
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
private readonly FluentMockServer _server;
private readonly Guid _guid;
@@ -33,11 +33,11 @@ namespace WireMock.Net.Tests.ResponseBuilders
{
// Assign
var headers = new Dictionary<string, string[]> { { "Content-Type", new[] { "application/xml" } } };
var request = new RequestMessage(new UrlDetails($"{_server.Urls[0]}/{_guid}"), "POST", "::1", new BodyData { DetectedBodyType = BodyType.Json, BodyAsJson = new { a = 1 } }, headers);
var request = new RequestMessage(new UrlDetails($"{_server.Urls[0]}/{_guid}"), "POST", "::1", new BodyData { DetectedBodyType = BodyType.Json, BodyAsJson = new { a = 1 } }, headers);
var response = Response.Create().WithProxy(_server.Urls[0]);
// Act
var responseMessage = await response.ProvideResponseAsync(request, _fileSystemHandlerMock.Object);
var responseMessage = await response.ProvideResponseAsync(request, _settingsMock.Object);
// Assert
Check.That(responseMessage.BodyData.BodyAsString).IsEqualTo("{\"p\":42}");

View File

@@ -1,17 +1,17 @@
using FluentAssertions;
using Moq;
using System;
using WireMock.Handlers;
using WireMock.RequestBuilders;
using WireMock.ResponseBuilders;
using WireMock.Serialization;
using WireMock.Settings;
using Xunit;
namespace WireMock.Net.Tests.Serialization
{
public class MappingConverterTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
private readonly Mock<IFluentMockServerSettings> _settingsMock = new Mock<IFluentMockServerSettings>();
[Fact]
public void ToMappingModel()
@@ -19,7 +19,7 @@ namespace WireMock.Net.Tests.Serialization
// Assign
var request = Request.Create();
var response = Response.Create();
var mapping = new Mapping(Guid.NewGuid(), "", null, _fileSystemHandlerMock.Object, request, response, 0, null, null, null);
var mapping = new Mapping(Guid.NewGuid(), "", null, _settingsMock.Object, request, response, 0, null, null, null);
// Act
var model = MappingConverter.ToMappingModel(mapping);
@@ -37,7 +37,7 @@ namespace WireMock.Net.Tests.Serialization
// 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);
var mapping = new Mapping(Guid.NewGuid(), "", null, _settingsMock.Object, request, response, 42, null, null, null);
// Act
var model = MappingConverter.ToMappingModel(mapping);

View File

@@ -0,0 +1,52 @@
using FluentAssertions;
using HandlebarsDotNet;
using Moq;
using System;
using WireMock.Handlers;
using WireMock.Transformers;
using Xunit;
namespace WireMock.Net.Tests.Transformers
{
public class HandlebarsContextFactoryTests
{
private readonly Mock<IFileSystemHandler> _fileSystemHandlerMock = new Mock<IFileSystemHandler>();
[Fact]
public void Create_WithNullAction_DoesNotInvokeAction()
{
// Arrange
var sut = new HandlebarsContextFactory(_fileSystemHandlerMock.Object, null);
// Act
var result = sut.Create();
// Assert
result.Should().NotBeNull();
}
[Fact]
public void Create_WithAction_InvokesAction()
{
// Arrange
int num = 0;
Action<IHandlebars, IFileSystemHandler> action = (ctx, fs) =>
{
ctx.Should().NotBeNull();
fs.Should().NotBeNull();
num++;
};
var sut = new HandlebarsContextFactory(_fileSystemHandlerMock.Object, action);
// Act
var result = sut.Create();
// Assert
result.Should().NotBeNull();
// Verify
num.Should().Be(1);
}
}
}

View File

@@ -1,7 +1,6 @@
using System;
using System.IO;
using FluentAssertions;
using Moq;
using NFluent;
using System;
using WireMock.Handlers;
using WireMock.Util;
using Xunit;
@@ -11,31 +10,36 @@ namespace WireMock.Net.Tests.Util
public class FileHelperTests
{
[Fact]
public void FileHelper_ReadAllTextWithRetryAndDelay()
public void TryReadMappingFileWithRetryAndDelay_WithIFileSystemHandlerOk_ReturnsTrue()
{
// Assign
var staticMappingHandlerMock = new Mock<IFileSystemHandler>();
staticMappingHandlerMock.Setup(m => m.ReadMappingFile(It.IsAny<string>())).Returns("text");
// Act
string result = FileHelper.ReadAllTextWithRetryAndDelay(staticMappingHandlerMock.Object, @"c:\temp");
bool result = FileHelper.TryReadMappingFileWithRetryAndDelay(staticMappingHandlerMock.Object, @"c:\temp", out string value);
// Assert
Check.That(result).Equals("text");
result.Should().BeTrue();
value.Should().Be("text");
// Verify
staticMappingHandlerMock.Verify(m => m.ReadMappingFile(@"c:\temp"), Times.Once);
}
[Fact]
public void FileHelper_ReadAllTextWithRetryAndDelay_Throws()
public void TryReadMappingFileWithRetryAndDelay_WithIFileSystemHandlerThrows_ReturnsFalse()
{
// Assign
var staticMappingHandlerMock = new Mock<IFileSystemHandler>();
staticMappingHandlerMock.Setup(m => m.ReadMappingFile(It.IsAny<string>())).Throws<NotSupportedException>();
// Act
Check.ThatCode(() => FileHelper.ReadAllTextWithRetryAndDelay(staticMappingHandlerMock.Object, @"c:\temp")).Throws<IOException>();
bool result = FileHelper.TryReadMappingFileWithRetryAndDelay(staticMappingHandlerMock.Object, @"c:\temp", out string value);
// Assert
result.Should().BeFalse();
value.Should().BeNull();
// Verify
staticMappingHandlerMock.Verify(m => m.ReadMappingFile(@"c:\temp"), Times.Exactly(3));