diff --git a/Directory.Build.props b/Directory.Build.props
index 1efbb2df..2a8c17a0 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -4,7 +4,7 @@
- 1.0.8
+ 1.0.9
diff --git a/examples/WireMock.Net.StandAlone.Net461/App.config b/examples/WireMock.Net.StandAlone.Net461/App.config
index 582b5c21..4be9c6ef 100644
--- a/examples/WireMock.Net.StandAlone.Net461/App.config
+++ b/examples/WireMock.Net.StandAlone.Net461/App.config
@@ -44,7 +44,7 @@
-
+
diff --git a/examples/WireMock.Net.StandAlone.Net461/WireMock.Net.StandAlone.Net461.csproj b/examples/WireMock.Net.StandAlone.Net461/WireMock.Net.StandAlone.Net461.csproj
index ee6de3ce..cc1988ce 100644
--- a/examples/WireMock.Net.StandAlone.Net461/WireMock.Net.StandAlone.Net461.csproj
+++ b/examples/WireMock.Net.StandAlone.Net461/WireMock.Net.StandAlone.Net461.csproj
@@ -225,8 +225,8 @@
..\..\packages\System.IO.Pipelines.4.5.2\lib\netstandard2.0\System.IO.Pipelines.dll
-
- ..\..\packages\System.Linq.Dynamic.Core.1.0.9\lib\net46\System.Linq.Dynamic.Core.dll
+
+ ..\..\packages\System.Linq.Dynamic.Core.1.0.11\lib\net46\System.Linq.Dynamic.Core.dll
..\..\packages\System.Memory.4.5.1\lib\netstandard2.0\System.Memory.dll
diff --git a/examples/WireMock.Net.StandAlone.Net461/packages.config b/examples/WireMock.Net.StandAlone.Net461/packages.config
index 1f47208a..9ff4575a 100644
--- a/examples/WireMock.Net.StandAlone.Net461/packages.config
+++ b/examples/WireMock.Net.StandAlone.Net461/packages.config
@@ -65,7 +65,7 @@
-
+
diff --git a/src/WireMock.Net/Matchers/ExactMatcher.cs b/src/WireMock.Net/Matchers/ExactMatcher.cs
index e3dcb183..ab2d3795 100644
--- a/src/WireMock.Net/Matchers/ExactMatcher.cs
+++ b/src/WireMock.Net/Matchers/ExactMatcher.cs
@@ -39,7 +39,12 @@ namespace WireMock.Matchers
///
public double IsMatch(string input)
{
- return MatchBehaviourHelper.Convert(MatchBehaviour, MatchScores.ToScore(_values.Select(value => value.Equals(input))));
+ if (_values.Length == 1)
+ {
+ return MatchBehaviourHelper.Convert(MatchBehaviour, MatchScores.ToScore(_values[0] == input));
+ }
+
+ return MatchBehaviourHelper.Convert(MatchBehaviour, MatchScores.ToScore(_values.Contains(input)));
}
///
diff --git a/src/WireMock.Net/Matchers/MatchScores.cs b/src/WireMock.Net/Matchers/MatchScores.cs
index fd03d2d3..5cefe4ce 100644
--- a/src/WireMock.Net/Matchers/MatchScores.cs
+++ b/src/WireMock.Net/Matchers/MatchScores.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
using System.Linq;
namespace WireMock.Matchers
@@ -54,6 +55,7 @@ namespace WireMock.Matchers
///
/// The values.
/// average score
+ [SuppressMessage("ReSharper", "PossibleMultipleEnumeration")]
public static double ToScore(IEnumerable values)
{
return values.Any() ? values.Select(ToScore).Average() : Mismatch;
@@ -64,6 +66,7 @@ namespace WireMock.Matchers
///
/// The values.
/// average score
+ [SuppressMessage("ReSharper", "PossibleMultipleEnumeration")]
public static double ToScore(IEnumerable values)
{
return values.Any() ? values.Average() : Mismatch;
diff --git a/src/WireMock.Net/Matchers/Request/RequestMessageParamMatcher.cs b/src/WireMock.Net/Matchers/Request/RequestMessageParamMatcher.cs
index e74e9303..603bf980 100644
--- a/src/WireMock.Net/Matchers/Request/RequestMessageParamMatcher.cs
+++ b/src/WireMock.Net/Matchers/Request/RequestMessageParamMatcher.cs
@@ -1,7 +1,7 @@
-using System;
+using JetBrains.Annotations;
+using System;
using System.Collections.Generic;
using System.Linq;
-using JetBrains.Annotations;
using WireMock.Util;
using WireMock.Validation;
@@ -106,15 +106,8 @@ namespace WireMock.Matchers.Request
if (Matchers != null && Matchers.Any())
{
- // Matchers are defined, just use the matchers to calculate the match score.
- var scores = new List();
- foreach (string valuePresentInRequestMessage in valuesPresentInRequestMessage)
- {
- double score = Matchers.Max(m => m.IsMatch(valuePresentInRequestMessage));
- scores.Add(score);
- }
-
- return scores.Any() ? scores.Average() : MatchScores.Mismatch;
+ // Return the score based on Matchers and valuesPresentInRequestMessage
+ return CalculateScore(valuesPresentInRequestMessage);
}
if (Matchers == null || !Matchers.Any())
@@ -125,5 +118,35 @@ namespace WireMock.Matchers.Request
return MatchScores.Mismatch;
}
+
+ private double CalculateScore(WireMockList valuesPresentInRequestMessage)
+ {
+ var total = new List();
+
+ // If the total patterns in all matchers > values in message, use the matcher as base
+ if (Matchers.Sum(m => m.GetPatterns().Length) > valuesPresentInRequestMessage.Count)
+ {
+ foreach (var matcher in Matchers)
+ {
+ double score = 0d;
+ foreach (string valuePresentInRequestMessage in valuesPresentInRequestMessage)
+ {
+ score += matcher.IsMatch(valuePresentInRequestMessage) / matcher.GetPatterns().Length;
+ }
+
+ total.Add(score);
+ }
+ }
+ else
+ {
+ foreach (string valuePresentInRequestMessage in valuesPresentInRequestMessage)
+ {
+ double score = Matchers.Max(m => m.IsMatch(valuePresentInRequestMessage));
+ total.Add(score);
+ }
+ }
+
+ return total.Any() ? MatchScores.ToScore(total) : MatchScores.Mismatch;
+ }
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net/WireMock.Net.csproj b/src/WireMock.Net/WireMock.Net.csproj
index e5751469..6b405481 100644
--- a/src/WireMock.Net/WireMock.Net.csproj
+++ b/src/WireMock.Net/WireMock.Net.csproj
@@ -57,7 +57,7 @@
all
runtime; build; native; contentfiles; analyzers
-
+
diff --git a/test/WireMock.Net.Tests/Matchers/ExactMatcherTests.cs b/test/WireMock.Net.Tests/Matchers/ExactMatcherTests.cs
index 1c903df0..bb91c329 100644
--- a/test/WireMock.Net.Tests/Matchers/ExactMatcherTests.cs
+++ b/test/WireMock.Net.Tests/Matchers/ExactMatcherTests.cs
@@ -33,7 +33,33 @@ namespace WireMock.Net.Tests.Matchers
}
[Fact]
- public void ExactMatcher_IsMatch_MultiplePatterns()
+ public void ExactMatcher_IsMatch_WithSinglePattern_ReturnsMatch1_0()
+ {
+ // Assign
+ var matcher = new ExactMatcher("x");
+
+ // Act
+ double result = matcher.IsMatch("x");
+
+ // Assert
+ Check.That(result).IsEqualTo(1.0);
+ }
+
+ [Fact]
+ public void ExactMatcher_IsMatch_WithSinglePattern_ReturnsMatch0_0()
+ {
+ // Assign
+ var matcher = new ExactMatcher("x");
+
+ // Act
+ double result = matcher.IsMatch("y");
+
+ // Assert
+ Check.That(result).IsEqualTo(0.0);
+ }
+
+ [Fact]
+ public void ExactMatcher_IsMatch_WithMultiplePatterns_ReturnsMatch0_5()
{
// Assign
var matcher = new ExactMatcher("x", "y");
@@ -42,7 +68,7 @@ namespace WireMock.Net.Tests.Matchers
double result = matcher.IsMatch("x");
// Assert
- Check.That(result).IsEqualTo(0.5d);
+ Check.That(result).IsEqualTo(1.0);
}
[Fact]
diff --git a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderUsingMethodTests.cs b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderUsingMethodTests.cs
index fbb000ca..0872d659 100644
--- a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderUsingMethodTests.cs
+++ b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderUsingMethodTests.cs
@@ -16,7 +16,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert 1
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That((matchers[0] as RequestMessageMethodMatcher).Methods).ContainsExactly("PATCH");
}
@@ -28,7 +28,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert 1
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageMethodMatcher));
// Act
@@ -36,7 +36,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert 2
matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(0);
+ Check.That(matchers.Count).IsEqualTo(0);
}
}
}
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithBodyTests.cs b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithBodyTests.cs
index 0573f94d..34b47979 100644
--- a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithBodyTests.cs
+++ b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithBodyTests.cs
@@ -20,7 +20,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(((RequestMessageBodyMatcher) matchers[0]).Matcher).IsEqualTo(matcher);
}
}
diff --git a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithCookieTests.cs b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithCookieTests.cs
index d6a07f7e..bab09dc2 100644
--- a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithCookieTests.cs
+++ b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithCookieTests.cs
@@ -17,7 +17,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageCookieMatcher));
}
@@ -29,7 +29,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageCookieMatcher));
}
@@ -41,7 +41,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageCookieMatcher));
}
}
diff --git a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithHeaderTests.cs b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithHeaderTests.cs
index 04d98364..6a3cb58e 100644
--- a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithHeaderTests.cs
+++ b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithHeaderTests.cs
@@ -17,7 +17,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageHeaderMatcher));
}
@@ -29,7 +29,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageHeaderMatcher));
}
@@ -41,7 +41,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageHeaderMatcher));
}
@@ -53,7 +53,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageHeaderMatcher));
}
@@ -65,7 +65,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageHeaderMatcher));
}
@@ -77,7 +77,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageHeaderMatcher));
}
}
diff --git a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithParamTests.cs b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithParamTests.cs
index 82148239..90dc906c 100644
--- a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithParamTests.cs
+++ b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithParamTests.cs
@@ -17,7 +17,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageParamMatcher));
}
@@ -29,7 +29,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageParamMatcher));
}
@@ -41,7 +41,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageParamMatcher));
}
@@ -53,7 +53,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageParamMatcher));
}
}
diff --git a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithUrlTests.cs b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithUrlTests.cs
index ad95157f..cd14e513 100644
--- a/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithUrlTests.cs
+++ b/test/WireMock.Net.Tests/RequestBuilders/RequestBuilderWithUrlTests.cs
@@ -17,7 +17,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageUrlMatcher));
}
@@ -29,7 +29,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageUrlMatcher));
}
@@ -41,7 +41,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageUrlMatcher));
}
@@ -53,7 +53,7 @@ namespace WireMock.Net.Tests.RequestBuilders
// Assert
var matchers = requestBuilder.GetPrivateFieldValue>("_requestMatchers");
- Check.That(matchers.Count()).IsEqualTo(1);
+ Check.That(matchers.Count).IsEqualTo(1);
Check.That(matchers[0]).IsInstanceOfType(typeof(RequestMessageUrlMatcher));
}
}
diff --git a/test/WireMock.Net.Tests/RequestMatchers/RequestMessageParamMatcherTests.cs b/test/WireMock.Net.Tests/RequestMatchers/RequestMessageParamMatcherTests.cs
index 4e73db18..d61be615 100644
--- a/test/WireMock.Net.Tests/RequestMatchers/RequestMessageParamMatcherTests.cs
+++ b/test/WireMock.Net.Tests/RequestMatchers/RequestMessageParamMatcherTests.cs
@@ -9,7 +9,7 @@ namespace WireMock.Net.Tests.RequestMatchers
public class RequestMessageParamMatcherTests
{
[Fact]
- public void RequestMessageParamMatcher_GetMatchingScore_IgnoreCaseKeyWithValuesPresentInUrl_MatchExactOnStringValues()
+ public void RequestMessageParamMatcher_GetMatchingScore_IgnoreCaseKeyWithValuesPresentInUrl_And_With1StringValues_Returns1_0()
{
// Assign
var requestMessage = new RequestMessage(new UrlDetails("http://localhost?key=test1"), "GET", "127.0.0.1");
@@ -24,7 +24,52 @@ namespace WireMock.Net.Tests.RequestMatchers
}
[Fact]
- public void RequestMessageParamMatcher_GetMatchingScore_KeyWithValuesPresentInUrl_MatchExactOnStringValues()
+ public void RequestMessageParamMatcher_GetMatchingScore_KeyWith1ValuePresentInUrl_And_With2Strings_Returns0_5()
+ {
+ // Assign
+ var requestMessage = new RequestMessage(new UrlDetails("http://localhost?key=test1"), "GET", "127.0.0.1");
+ var matcher = new RequestMessageParamMatcher(MatchBehaviour.AcceptOnMatch, "key", false, new[] { "test1", "test2" });
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsEqualTo(0.5d);
+ }
+
+ [Fact]
+ public void RequestMessageParamMatcher_GetMatchingScore_KeyWith3ValuesPresentInUrl_And_With1ExactStringWith2Patterns_Returns0_66()
+ {
+ // Assign
+ var requestMessage = new RequestMessage(new UrlDetails("http://localhost?key=test1,test2,test3"), "GET", "127.0.0.1");
+ var matcher = new RequestMessageParamMatcher(MatchBehaviour.AcceptOnMatch, "key", false, new IStringMatcher[] { new ExactMatcher("test1", "test2") });
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsCloseTo(0.66d, 0.1d);
+ }
+
+ [Fact]
+ public void RequestMessageParamMatcher_GetMatchingScore_KeyWith2ValuesPresentInUrl_And_With1ExactStringWith3Patterns_Returns0_66()
+ {
+ // Assign
+ var requestMessage = new RequestMessage(new UrlDetails("http://localhost?key=test1,test2"), "GET", "127.0.0.1");
+ var matcher = new RequestMessageParamMatcher(MatchBehaviour.AcceptOnMatch, "key", false, new IStringMatcher[] { new ExactMatcher("test1", "test2", "test3") });
+
+ // Act
+ var result = new RequestMatchResult();
+ double score = matcher.GetMatchingScore(requestMessage, result);
+
+ // Assert
+ Check.That(score).IsCloseTo(0.66d, 0.1d);
+ }
+
+ [Fact]
+ public void RequestMessageParamMatcher_GetMatchingScore_KeyWith2ValuesPresentInUrl_And_With2Strings_Returns1_0()
{
// Assign
var requestMessage = new RequestMessage(new UrlDetails("http://localhost?key=test1,test2"), "GET", "127.0.0.1");
@@ -39,7 +84,7 @@ namespace WireMock.Net.Tests.RequestMatchers
}
[Fact]
- public void RequestMessageParamMatcher_GetMatchingScore_KeyWithValuesPresentInUrl_MatchExactOnExactMatchers()
+ public void RequestMessageParamMatcher_GetMatchingScore_KeyWith2ValuesPresentInUrl_And_With2ExactStringMatchers_Returns1_0()
{
// Assign
var requestMessage = new RequestMessage(new UrlDetails("http://localhost?key=test1,test2"), "GET", "127.0.0.1");
diff --git a/test/WireMock.Net.Tests/RequestMessageTests.cs b/test/WireMock.Net.Tests/RequestMessageTests.cs
index f4828818..69aee696 100644
--- a/test/WireMock.Net.Tests/RequestMessageTests.cs
+++ b/test/WireMock.Net.Tests/RequestMessageTests.cs
@@ -60,6 +60,18 @@ namespace WireMock.Net.Tests
Check.That(request.GetParameter("key")).Contains("2");
}
+ [Fact]
+ public void RequestMessage_ParseQuery_SingleKey_MultipleValuesCommaSeparated()
+ {
+ // Assign
+ var request = new RequestMessage(new UrlDetails("http://localhost?key=1,2,3"), "POST", ClientIp);
+
+ // Assert
+ Check.That(request.GetParameter("key")).Contains("1");
+ Check.That(request.GetParameter("key")).Contains("2");
+ Check.That(request.GetParameter("key")).Contains("3");
+ }
+
[Fact]
public void RequestMessage_ParseQuery_SingleKey_MultipleValues()
{
diff --git a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj
index 33c73504..d8e5e9ea 100644
--- a/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj
+++ b/test/WireMock.Net.Tests/WireMock.Net.Tests.csproj
@@ -30,13 +30,13 @@
-
+
-
+
-
+
all