diff --git a/src/WireMock.Net/Serialization/MappingConverter.cs b/src/WireMock.Net/Serialization/MappingConverter.cs index ab9c399d..782dd8dd 100644 --- a/src/WireMock.Net/Serialization/MappingConverter.cs +++ b/src/WireMock.Net/Serialization/MappingConverter.cs @@ -147,12 +147,10 @@ namespace WireMock.Serialization return newDictionary; } - - - private static string[] Map([CanBeNull] IEnumerable> funcs) - { - return funcs?.Select(Map).Where(x => x != null).ToArray(); - } + //private static string[] Map([CanBeNull] IEnumerable> funcs) + //{ + // return funcs?.Select(Map).Where(x => x != null).ToArray(); + //} private static string Map([CanBeNull] Func func) { diff --git a/test/WireMock.Net.Tests/RequestMatchers/RequestMessageBodyMatcherTests.cs b/test/WireMock.Net.Tests/RequestMatchers/RequestMessageBodyMatcherTests.cs new file mode 100644 index 00000000..e0a59f7e --- /dev/null +++ b/test/WireMock.Net.Tests/RequestMatchers/RequestMessageBodyMatcherTests.cs @@ -0,0 +1,145 @@ +using System; +using Moq; +using NFluent; +using WireMock.Matchers; +using WireMock.Matchers.Request; +using WireMock.Util; +using Xunit; + +namespace WireMock.Net.Tests.RequestMatchers +{ + public class RequestMessageBodyMatcherTests + { + [Fact] + public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsString_IStringMatcher() + { + // Assign + var body = new BodyData + { + BodyAsString = "b" + }; + var stringMatcherMock = new Mock(); + stringMatcherMock.Setup(m => m.IsMatch(It.IsAny())).Returns(0.5d); + + var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", body); + + var matcher = new RequestMessageBodyMatcher(stringMatcherMock.Object); + + // Act + var result = new RequestMatchResult(); + double score = matcher.GetMatchingScore(requestMessage, result); + + // Assert + Check.That(score).IsEqualTo(0.5d); + + // Verify + stringMatcherMock.Verify(m => m.GetPatterns(), Times.Never); + stringMatcherMock.Verify(m => m.IsMatch("b"), Times.Once); + } + + [Fact] + public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsBytes_IStringMatcher() + { + // Assign + var body = new BodyData + { + BodyAsBytes = new byte[] { 1 } + }; + var stringMatcherMock = new Mock(); + stringMatcherMock.Setup(m => m.IsMatch(It.IsAny())).Returns(0.5d); + + var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", body); + + var matcher = new RequestMessageBodyMatcher(stringMatcherMock.Object); + + // Act + var result = new RequestMatchResult(); + double score = matcher.GetMatchingScore(requestMessage, result); + + // Assert + Check.That(score).IsEqualTo(0.0d); + + // Verify + stringMatcherMock.Verify(m => m.GetPatterns(), Times.Never); + stringMatcherMock.Verify(m => m.IsMatch(It.IsAny()), Times.Never); + } + + [Fact] + public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsJson_IStringMatcher() + { + // Assign + var body = new BodyData + { + BodyAsJson = new { value = 42 } + }; + var stringMatcherMock = new Mock(); + stringMatcherMock.Setup(m => m.IsMatch(It.IsAny())).Returns(0.5d); + + var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", body); + + var matcher = new RequestMessageBodyMatcher(stringMatcherMock.Object); + + // Act + var result = new RequestMatchResult(); + double score = matcher.GetMatchingScore(requestMessage, result); + + // Assert + Check.That(score).IsEqualTo(0.0d); + + // Verify + stringMatcherMock.Verify(m => m.IsMatch("b"), Times.Never); + } + + [Fact] + public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsJson_IObjectMatcher() + { + // Assign + var body = new BodyData + { + BodyAsJson = 42 + }; + var objectMatcherMock = new Mock(); + objectMatcherMock.Setup(m => m.IsMatch(It.IsAny())).Returns(0.5d); + + var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", body); + + var matcher = new RequestMessageBodyMatcher(objectMatcherMock.Object); + + // Act + var result = new RequestMatchResult(); + double score = matcher.GetMatchingScore(requestMessage, result); + + // Assert + Check.That(score).IsEqualTo(0.5d); + + // Verify + objectMatcherMock.Verify(m => m.IsMatch(42), Times.Once); + } + + [Fact] + public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsBytes_IObjectMatcher() + { + // Assign + var body = new BodyData + { + BodyAsBytes = new byte[] { 1 } + }; + var objectMatcherMock = new Mock(); + objectMatcherMock.Setup(m => m.IsMatch(It.IsAny())).Returns(0.5d); + + var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", body); + + var matcher = new RequestMessageBodyMatcher(objectMatcherMock.Object); + + // Act + var result = new RequestMatchResult(); + double score = matcher.GetMatchingScore(requestMessage, result); + + // Assert + Check.That(score).IsEqualTo(0.5d); + + // Verify + objectMatcherMock.Verify(m => m.IsMatch(It.IsAny()), Times.Once); + } + } +}