diff --git a/src/WireMock.Net/Matchers/Request/RequestMessageBodyMatcher.cs b/src/WireMock.Net/Matchers/Request/RequestMessageBodyMatcher.cs
index ce9f9f5c..ad25e470 100644
--- a/src/WireMock.Net/Matchers/Request/RequestMessageBodyMatcher.cs
+++ b/src/WireMock.Net/Matchers/Request/RequestMessageBodyMatcher.cs
@@ -32,17 +32,17 @@ namespace WireMock.Matchers.Request
///
/// Initializes a new instance of the class.
///
- /// The body.
/// The match behaviour.
- public RequestMessageBodyMatcher(MatchBehaviour matchBehaviour, [NotNull] string body) : this(new SimMetricsMatcher(matchBehaviour, body))
+ /// The body.
+ public RequestMessageBodyMatcher(MatchBehaviour matchBehaviour, [NotNull] string body) : this(new WildcardMatcher(matchBehaviour, body))
{
}
///
/// Initializes a new instance of the class.
///
- /// The body.
/// The match behaviour.
+ /// The body.
public RequestMessageBodyMatcher(MatchBehaviour matchBehaviour, [NotNull] byte[] body) : this(new ExactObjectMatcher(matchBehaviour, body))
{
}
@@ -50,8 +50,8 @@ namespace WireMock.Matchers.Request
///
/// Initializes a new instance of the class.
///
- /// The body.
/// The match behaviour.
+ /// The body.
public RequestMessageBodyMatcher(MatchBehaviour matchBehaviour, [NotNull] object body) : this(new ExactObjectMatcher(matchBehaviour, body))
{
}
diff --git a/src/WireMock.Net/Matchers/Request/RequestMessageCookieMatcher.cs b/src/WireMock.Net/Matchers/Request/RequestMessageCookieMatcher.cs
index af775739..8e5d9b4a 100644
--- a/src/WireMock.Net/Matchers/Request/RequestMessageCookieMatcher.cs
+++ b/src/WireMock.Net/Matchers/Request/RequestMessageCookieMatcher.cs
@@ -11,6 +11,8 @@ namespace WireMock.Matchers.Request
///
public class RequestMessageCookieMatcher : IRequestMatcher
{
+ private readonly MatchBehaviour _matchBehaviour;
+
///
/// The funcs.
///
@@ -38,6 +40,7 @@ namespace WireMock.Matchers.Request
Check.NotNull(name, nameof(name));
Check.NotNull(pattern, nameof(pattern));
+ _matchBehaviour = matchBehaviour;
Name = name;
Matchers = new IStringMatcher[] { new WildcardMatcher(matchBehaviour, pattern, ignoreCase) };
}
@@ -78,7 +81,7 @@ namespace WireMock.Matchers.Request
{
if (requestMessage.Cookies == null)
{
- return MatchScores.Mismatch;
+ return MatchBehaviourHelper.Convert(_matchBehaviour, MatchScores.Mismatch);
}
if (Funcs != null)
@@ -93,7 +96,7 @@ namespace WireMock.Matchers.Request
if (!requestMessage.Cookies.ContainsKey(Name))
{
- return MatchScores.Mismatch;
+ return MatchBehaviourHelper.Convert(_matchBehaviour, MatchScores.Mismatch);
}
string value = requestMessage.Cookies[Name];
diff --git a/src/WireMock.Net/Matchers/Request/RequestMessageHeaderMatcher.cs b/src/WireMock.Net/Matchers/Request/RequestMessageHeaderMatcher.cs
index b496a682..21c21bd3 100644
--- a/src/WireMock.Net/Matchers/Request/RequestMessageHeaderMatcher.cs
+++ b/src/WireMock.Net/Matchers/Request/RequestMessageHeaderMatcher.cs
@@ -13,6 +13,8 @@ namespace WireMock.Matchers.Request
///
public class RequestMessageHeaderMatcher : IRequestMatcher
{
+ private readonly MatchBehaviour _matchBehaviour;
+
///
/// The functions
///
@@ -37,10 +39,10 @@ namespace WireMock.Matchers.Request
/// The match behaviour.
public RequestMessageHeaderMatcher(MatchBehaviour matchBehaviour, [NotNull] string name, [NotNull] string pattern, bool ignoreCase)
{
-
Check.NotNull(name, nameof(name));
Check.NotNull(pattern, nameof(pattern));
+ _matchBehaviour = matchBehaviour;
Name = name;
Matchers = new IStringMatcher[] { new WildcardMatcher(matchBehaviour, pattern, ignoreCase) };
}
@@ -97,7 +99,7 @@ namespace WireMock.Matchers.Request
{
if (requestMessage.Headers == null)
{
- return MatchScores.Mismatch;
+ return MatchBehaviourHelper.Convert(_matchBehaviour, MatchScores.Mismatch);
}
if (Funcs != null)
@@ -112,7 +114,7 @@ namespace WireMock.Matchers.Request
if (!requestMessage.Headers.ContainsKey(Name))
{
- return MatchScores.Mismatch;
+ return MatchBehaviourHelper.Convert(_matchBehaviour, MatchScores.Mismatch);
}
WireMockList list = requestMessage.Headers[Name];
diff --git a/src/WireMock.Net/Matchers/Request/RequestMessagePathMatcher.cs b/src/WireMock.Net/Matchers/Request/RequestMessagePathMatcher.cs
index 8138fe72..0504e5f2 100644
--- a/src/WireMock.Net/Matchers/Request/RequestMessagePathMatcher.cs
+++ b/src/WireMock.Net/Matchers/Request/RequestMessagePathMatcher.cs
@@ -12,7 +12,7 @@ namespace WireMock.Matchers.Request
public class RequestMessagePathMatcher : IRequestMatcher
{
///
- /// The matcher.
+ /// The matchers
///
public IReadOnlyList Matchers { get; }
@@ -37,6 +37,7 @@ namespace WireMock.Matchers.Request
public RequestMessagePathMatcher([NotNull] params IStringMatcher[] matchers)
{
Check.NotNull(matchers, nameof(matchers));
+
Matchers = matchers;
}
@@ -47,6 +48,7 @@ namespace WireMock.Matchers.Request
public RequestMessagePathMatcher([NotNull] params Func[] funcs)
{
Check.NotNull(funcs, nameof(funcs));
+
Funcs = funcs;
}
diff --git a/test/WireMock.Net.Tests/RequestMatchers/RequestMessageCookieMatcherTests.cs b/test/WireMock.Net.Tests/RequestMatchers/RequestMessageCookieMatcherTests.cs
index 97335b50..c955c29b 100644
--- a/test/WireMock.Net.Tests/RequestMatchers/RequestMessageCookieMatcherTests.cs
+++ b/test/WireMock.Net.Tests/RequestMatchers/RequestMessageCookieMatcherTests.cs
@@ -9,6 +9,99 @@ namespace WireMock.Net.Tests.RequestMatchers
{
public class RequestMessageCookieMatcherTests
{
+ [Fact]
+ public void RequestMessageCookieMatcher_GetMatchingScore_AcceptOnMatch_CookieDoesNotExists()
+ {
+ // Assign
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1");
+ var matcher = new RequestMessageCookieMatcher(MatchBehaviour.AcceptOnMatch, "c", "x");
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(0.0d);
+ }
+
+ [Fact]
+ public void RequestMessageCookieMatcher_GetMatchingScore_RejectOnMatch_CookieDoesNotExists()
+ {
+ // Assign
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1");
+ var matcher = new RequestMessageCookieMatcher(MatchBehaviour.RejectOnMatch, "c", "x");
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(1.0d);
+ }
+
+ [Fact]
+ public void RequestMessageCookieMatcher_GetMatchingScore_AcceptOnMatch_CookieDoesNotMatchPattern()
+ {
+ // Assign
+ var cookies = new Dictionary { { "c", "x" } };
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", null, null, cookies);
+ var matcher = new RequestMessageCookieMatcher(MatchBehaviour.AcceptOnMatch, "no-match", "123");
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(0.0d);
+ }
+ [Fact]
+ public void RequestMessageCookieMatcher_GetMatchingScore_RejectOnMatch_CookieDoesNotMatchPattern()
+ {
+ // Assign
+ var cookies = new Dictionary { { "h", "x" } };
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", null, null, cookies);
+ var matcher = new RequestMessageCookieMatcher(MatchBehaviour.RejectOnMatch, "no-match", "123");
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(1.0d);
+ }
+
+ [Fact]
+ public void RequestMessageCookieMatcher_GetMatchingScore_AcceptOnMatch()
+ {
+ // Assign
+ var cookies = new Dictionary { { "h", "x" } };
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", null, null, cookies);
+ var matcher = new RequestMessageCookieMatcher(MatchBehaviour.AcceptOnMatch, "h", "x");
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(1.0d);
+ }
+
+ [Fact]
+ public void RequestMessageCookieMatcher_GetMatchingScore_RejectOnMatch()
+ {
+ // Assign
+ var cookies = new Dictionary { { "h", "x" } };
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", null, null, cookies);
+ var matcher = new RequestMessageCookieMatcher(MatchBehaviour.RejectOnMatch, "h", "x");
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(0.0d);
+ }
+
[Fact]
public void RequestMessageCookieMatcher_GetMatchingScore_IStringMatcher_Match()
{
diff --git a/test/WireMock.Net.Tests/RequestMatchers/RequestMessageHeaderMatcherTests.cs b/test/WireMock.Net.Tests/RequestMatchers/RequestMessageHeaderMatcherTests.cs
index c273a882..d0804830 100644
--- a/test/WireMock.Net.Tests/RequestMatchers/RequestMessageHeaderMatcherTests.cs
+++ b/test/WireMock.Net.Tests/RequestMatchers/RequestMessageHeaderMatcherTests.cs
@@ -9,11 +9,104 @@ namespace WireMock.Net.Tests.RequestMatchers
{
public class RequestMessageHeaderMatcherTests
{
+ [Fact]
+ public void RequestMessageHeaderMatcher_GetMatchingScore_AcceptOnMatch_HeaderDoesNotExists()
+ {
+ // Assign
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1");
+ var matcher = new RequestMessageHeaderMatcher(MatchBehaviour.AcceptOnMatch, "h", "x", true);
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(0.0d);
+ }
+
+ [Fact]
+ public void RequestMessageHeaderMatcher_GetMatchingScore_RejectOnMatch_HeaderDoesNotExists()
+ {
+ // Assign
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1");
+ var matcher = new RequestMessageHeaderMatcher(MatchBehaviour.RejectOnMatch, "h", "x", true);
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(1.0d);
+ }
+
+ [Fact]
+ public void RequestMessageHeaderMatcher_GetMatchingScore_AcceptOnMatch_HeaderDoesNotMatchPattern()
+ {
+ // Assign
+ var headers = new Dictionary { { "h", new[] { "x" } } };
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", null, headers);
+ var matcher = new RequestMessageHeaderMatcher(MatchBehaviour.AcceptOnMatch, "no-match", "123", true);
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(0.0d);
+ }
+ [Fact]
+ public void RequestMessageHeaderMatcher_GetMatchingScore_RejectOnMatch_HeaderDoesNotMatchPattern()
+ {
+ // Assign
+ var headers = new Dictionary { { "h", new[] { "x" } } };
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", null, headers);
+ var matcher = new RequestMessageHeaderMatcher(MatchBehaviour.RejectOnMatch, "no-match", "123", true);
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(1.0d);
+ }
+
+ [Fact]
+ public void RequestMessageHeaderMatcher_GetMatchingScore_AcceptOnMatch()
+ {
+ // Assign
+ var headers = new Dictionary { { "h", new[] { "x" } } };
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", null, headers);
+ var matcher = new RequestMessageHeaderMatcher(MatchBehaviour.AcceptOnMatch, "h", "x", true);
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(1.0d);
+ }
+
+ [Fact]
+ public void RequestMessageHeaderMatcher_GetMatchingScore_RejectOnMatch()
+ {
+ // Assign
+ var headers = new Dictionary { { "h", new[] { "x" } } };
+ var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", null, headers);
+ var matcher = new RequestMessageHeaderMatcher(MatchBehaviour.RejectOnMatch, "h", "x", true);
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(0.0d);
+ }
+
[Fact]
public void RequestMessageHeaderMatcher_GetMatchingScore_IStringMatcher_Match()
{
// Assign
- var headers = new Dictionary { { "h", new [] { "x" } } };
+ var headers = new Dictionary { { "h", new[] { "x" } } };
var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", null, headers);
var matcher = new RequestMessageHeaderMatcher("h", new ExactMatcher("x"));