diff --git a/examples/WireMock.Net.ConsoleApplication/MainApp.cs b/examples/WireMock.Net.ConsoleApplication/MainApp.cs
index 0bf8fccd..2d2b97aa 100644
--- a/examples/WireMock.Net.ConsoleApplication/MainApp.cs
+++ b/examples/WireMock.Net.ConsoleApplication/MainApp.cs
@@ -150,6 +150,14 @@ namespace WireMock.Net.ConsoleApplication
.WithHeader("Content-Type", "application/json")
.WithBody(@"{ ""result"": ""data deleted with 200""}"));
+ server
+ .Given(Request.Create()
+ .WithPath("/reject")
+ .WithHeader("x", "1", MatchBehaviour.RejectOnMatch)
+ .UsingAnyMethod())
+ .RespondWith(Response.Create()
+ .WithBody(@"{ ""result"": ""reject""}"));
+
server
.Given(Request.Create().WithPath("/nobody").UsingGet())
.RespondWith(Response.Create().WithDelay(TimeSpan.FromSeconds(1))
diff --git a/src/WireMock.Net/RequestBuilders/IHeadersAndCookiesRequestBuilder.cs b/src/WireMock.Net/RequestBuilders/IHeadersAndCookiesRequestBuilder.cs
index a735e564..a8b1b853 100644
--- a/src/WireMock.Net/RequestBuilders/IHeadersAndCookiesRequestBuilder.cs
+++ b/src/WireMock.Net/RequestBuilders/IHeadersAndCookiesRequestBuilder.cs
@@ -11,6 +11,15 @@ namespace WireMock.RequestBuilders
///
public interface IHeadersAndCookiesRequestBuilder : IBodyRequestBuilder, IRequestMatcher, IParamsRequestBuilder
{
+ ///
+ /// WithHeader: matching based on name, pattern and matchBehaviour.
+ ///
+ /// The name.
+ /// The pattern.
+ /// The match behaviour.
+ /// The .
+ IRequestBuilder WithHeader([NotNull] string name, string pattern, MatchBehaviour matchBehaviour);
+
///
/// WithHeader: matching based on name, pattern, ignoreCase and matchBehaviour.
///
@@ -21,6 +30,15 @@ namespace WireMock.RequestBuilders
/// The .
IRequestBuilder WithHeader([NotNull] string name, string pattern, bool ignoreCase = true, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
+ ///
+ /// WithHeader: matching based on name, patterns and matchBehaviour.
+ ///
+ /// The name.
+ /// The patterns.
+ /// The match behaviour.
+ /// The .
+ IRequestBuilder WithHeader([NotNull] string name, string[] patterns, MatchBehaviour matchBehaviour);
+
///
/// WithHeader: matching based on name, patterns, ignoreCase and matchBehaviour.
///
diff --git a/src/WireMock.Net/RequestBuilders/Request.cs b/src/WireMock.Net/RequestBuilders/Request.cs
index c2051d9e..d22274b1 100644
--- a/src/WireMock.Net/RequestBuilders/Request.cs
+++ b/src/WireMock.Net/RequestBuilders/Request.cs
@@ -312,6 +312,12 @@ namespace WireMock.RequestBuilders
return this;
}
+ ///
+ public IRequestBuilder WithHeader(string name, string pattern, MatchBehaviour matchBehaviour)
+ {
+ return WithHeader(name, pattern, true, matchBehaviour);
+ }
+
///
public IRequestBuilder WithHeader(string name, string pattern, bool ignoreCase = true, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
{
@@ -322,6 +328,12 @@ namespace WireMock.RequestBuilders
return this;
}
+ ///
+ public IRequestBuilder WithHeader(string name, string[] patterns, MatchBehaviour matchBehaviour)
+ {
+ return WithHeader(name, patterns, true, matchBehaviour);
+ }
+
///
public IRequestBuilder WithHeader(string name, string[] patterns, bool ignoreCase = true, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
{
diff --git a/src/WireMock.Net/Serialization/MatcherMapper.cs b/src/WireMock.Net/Serialization/MatcherMapper.cs
index 9e2343d2..b1f0f376 100644
--- a/src/WireMock.Net/Serialization/MatcherMapper.cs
+++ b/src/WireMock.Net/Serialization/MatcherMapper.cs
@@ -22,9 +22,11 @@ namespace WireMock.Serialization
string[] patterns = matcher is IStringMatcher stringMatcher ? stringMatcher.GetPatterns() : new string[0];
bool? ignorecase = matcher is IIgnoreCaseMatcher ignoreCaseMatcher ? ignoreCaseMatcher.IgnoreCase : (bool?)null;
+ bool? rejectOnMatch = matcher.MatchBehaviour == MatchBehaviour.RejectOnMatch ? true : (bool?) null;
return new MatcherModel
{
+ RejectOnMatch = rejectOnMatch,
IgnoreCase = ignorecase,
Name = matcher.Name,
Pattern = patterns.Length == 1 ? patterns.First() : null,
diff --git a/src/WireMock.Net/Serialization/MatcherModelMapper.cs b/src/WireMock.Net/Serialization/MatcherModelMapper.cs
index 2aea737d..91852d14 100644
--- a/src/WireMock.Net/Serialization/MatcherModelMapper.cs
+++ b/src/WireMock.Net/Serialization/MatcherModelMapper.cs
@@ -20,7 +20,7 @@ namespace WireMock.Serialization
string matcherType = parts.Length > 1 ? parts[1] : null;
string[] patterns = matcher.Patterns ?? new[] { matcher.Pattern };
- var matchBehaviour = matcher.RejectOnMatch == true ? MatchBehaviour.RejectOnMatch : MatchBehaviour.AcceptOnMatch;
+ MatchBehaviour matchBehaviour = matcher.RejectOnMatch == true ? MatchBehaviour.RejectOnMatch : MatchBehaviour.AcceptOnMatch;
switch (matcherName)
{