Handles case where parameter value contains == (#316)

This commit is contained in:
Ian Firkin
2019-08-14 16:05:22 -04:00
committed by Stef Heyenrath
parent a6c6cfee42
commit d71c48f8ac
2 changed files with 15 additions and 6 deletions

View File

@@ -18,11 +18,6 @@ namespace WireMock.Util
string[] JoinParts(string[] parts)
{
if (parts.Length > 2)
{
return new[] { string.Join("=", parts, 1, parts.Length - 1) };
}
if (parts.Length > 1)
{
return parts[1].Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); // support "?key=1,2"
@@ -33,7 +28,7 @@ namespace WireMock.Util
return queryString.TrimStart('?')
.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)
.ToDictionary(grouping => grouping.Key, grouping => new WireMockList<string>(grouping.SelectMany(x => x)));
}