diff --git a/Dockerfile b/Dockerfile index f9da764f..51032634 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM alpine:3.9.4 RUN apk add --update wget bash ca-certificates && \ - wget -O mockingjay-server https://github.com/quii/mockingjay-server/releases/download/1.11.1/linux_amd64_mockingjay-server --no-check-certificate && \ + wget -O mockingjay-server https://github.com/quii/mockingjay-server/releases/download/1.11.2/linux_amd64_mockingjay-server --no-check-certificate && \ chmod +x mockingjay-server && \ apk del wget bash && \ rm -rf /var/cache/apk/* diff --git a/mockingjay/request.go b/mockingjay/request.go index 4b6543a6..f08a9b2f 100644 --- a/mockingjay/request.go +++ b/mockingjay/request.go @@ -267,6 +267,17 @@ func matchURI(serverURI string, serverRegex *RegexField, incomingURI string) boo return true } else if serverRegex != nil { return serverRegex.MatchString(incomingURI) + } else { + inURL, err := url.Parse(incomingURI) + expectedURL, err := url.Parse(serverURI) + + if err != nil { + return false + } + + if reflect.DeepEqual(inURL.Query(), expectedURL.Query()) { + return inURL.Path == expectedURL.Path + } } return false } diff --git a/mockingjay/requestmatch_test.go b/mockingjay/requestmatch_test.go index 1005df96..52d07c9a 100644 --- a/mockingjay/requestmatch_test.go +++ b/mockingjay/requestmatch_test.go @@ -230,3 +230,17 @@ func TestItIgnoresHeadersKeyCasing(t *testing.T) { assert.True(t, requestMatches(expectedRequest, incomingRequest, endpointName, testLogger)) } + +func TestItIgnoresOrderOfQueryString(t *testing.T) { + expectedRequest := Request{ + URI: "?a=1&b=2", + Method: "GET", + } + + incomingRequest := Request{ + URI: "?b=2&a=1", + Method: "GET", + } + + assert.True(t, requestMatches(expectedRequest, incomingRequest, endpointName, testLogger)) +}