query params match irregardless of order

Signed-off-by: Chris Brown <cbrown@pivotal.io>
diff --git a/ghttp/handlers.go b/ghttp/handlers.go
index 8c1668a..424dab5 100644
--- a/ghttp/handlers.go
+++ b/ghttp/handlers.go
@@ -6,6 +6,7 @@
 	"fmt"
 	"io/ioutil"
 	"net/http"
+	"net/url"
 
 	. "github.com/onsi/gomega"
 	"github.com/onsi/gomega/types"
@@ -36,7 +37,10 @@
 			Ω(req.URL.Path).Should(Equal(path), "Path mismatch")
 		}
 		if len(rawQuery) > 0 {
-			Ω(req.URL.RawQuery).Should(Equal(rawQuery[0]), "RawQuery mismatch")
+			values, err := url.ParseQuery(rawQuery[0])
+			Ω(err).ShouldNot(HaveOccurred(), "Expected RawQuery is malformed")
+
+			Ω(req.URL.Query()).Should(Equal(values), "RawQuery mismatch")
 		}
 	}
 }
diff --git a/ghttp/test_server_test.go b/ghttp/test_server_test.go
index 793ca4a..31a2053 100644
--- a/ghttp/test_server_test.go
+++ b/ghttp/test_server_test.go
@@ -4,6 +4,7 @@
 	"bytes"
 	"io/ioutil"
 	"net/http"
+	"net/url"
 	"regexp"
 
 	. "github.com/onsi/ginkgo"
@@ -222,6 +223,18 @@
 					resp, err = http.Get(s.URL() + "/foo?baz=bar")
 					Ω(err).ShouldNot(HaveOccurred())
 				})
+
+				It("should match irregardless of query parameter ordering", func() {
+					s.SetHandler(0, VerifyRequest("GET", "/foo", "type=get&name=money"))
+					u, _ := url.Parse(s.URL() + "/foo")
+					u.RawQuery = url.Values{
+						"type": []string{"get"},
+						"name": []string{"money"},
+					}.Encode()
+
+					resp, err = http.Get(u.String())
+					Ω(err).ShouldNot(HaveOccurred())
+				})
 			})
 
 			Context("when passed a matcher for path", func() {