mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-06-07 23:42:48 +02:00
Handles case where parameter value contains == (#316)
This commit is contained in:
committed by
Stef Heyenrath
parent
a6c6cfee42
commit
d71c48f8ac
@@ -18,11 +18,6 @@ namespace WireMock.Util
|
|||||||
|
|
||||||
string[] JoinParts(string[] parts)
|
string[] JoinParts(string[] parts)
|
||||||
{
|
{
|
||||||
if (parts.Length > 2)
|
|
||||||
{
|
|
||||||
return new[] { string.Join("=", parts, 1, parts.Length - 1) };
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parts.Length > 1)
|
if (parts.Length > 1)
|
||||||
{
|
{
|
||||||
return parts[1].Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); // support "?key=1,2"
|
return parts[1].Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); // support "?key=1,2"
|
||||||
@@ -33,7 +28,7 @@ namespace WireMock.Util
|
|||||||
|
|
||||||
return queryString.TrimStart('?')
|
return queryString.TrimStart('?')
|
||||||
.Split(new[] { '&', ';' }, StringSplitOptions.RemoveEmptyEntries) // Support "?key=value;key=anotherValue" and "?key=value&key=anotherValue"
|
.Split(new[] { '&', ';' }, StringSplitOptions.RemoveEmptyEntries) // Support "?key=value;key=anotherValue" and "?key=value&key=anotherValue"
|
||||||
.Select(parameter => parameter.Split(new[] { '=' }, StringSplitOptions.RemoveEmptyEntries))
|
.Select(parameter => parameter.Split(new[] { '=' }, 2, StringSplitOptions.RemoveEmptyEntries))
|
||||||
.GroupBy(parts => parts[0], JoinParts)
|
.GroupBy(parts => parts[0], JoinParts)
|
||||||
.ToDictionary(grouping => grouping.Key, grouping => new WireMockList<string>(grouping.SelectMany(x => x)));
|
.ToDictionary(grouping => grouping.Key, grouping => new WireMockList<string>(grouping.SelectMany(x => x)));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -146,6 +146,20 @@ namespace WireMock.Net.Tests.Util
|
|||||||
result["key"].Should().Equal(new WireMockList<string>("value=what"));
|
result["key"].Should().Equal(new WireMockList<string>("value=what"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Parse_With1ParamWithTwoEqualSigns()
|
||||||
|
{
|
||||||
|
// Assign
|
||||||
|
string query = "?key=value==what";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = QueryStringParser.Parse(query);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
result.Count.Should().Be(1);
|
||||||
|
result["key"].Should().Equal(new WireMockList<string>("value==what"));
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Parse_WithMultipleParamWithSameKeySeparatedBySemiColon()
|
public void Parse_WithMultipleParamWithSameKeySeparatedBySemiColon()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user