Merge pull request #112 from robdimsdale/master
Add VerifyBody method.
diff --git a/ghttp/handlers.go b/ghttp/handlers.go
index fdd4034..63ff691 100644
--- a/ghttp/handlers.go
+++ b/ghttp/handlers.go
@@ -90,6 +90,19 @@
return VerifyHeader(http.Header{key: values})
}
+//VerifyBody returns a handler that verifies that the body of the request matches the passed in byte array.
+//It does this using Equal().
+func VerifyBody(expectedBody []byte) http.HandlerFunc {
+ return CombineHandlers(
+ func(w http.ResponseWriter, req *http.Request) {
+ body, err := ioutil.ReadAll(req.Body)
+ req.Body.Close()
+ Ω(err).ShouldNot(HaveOccurred())
+ Ω(body).Should(Equal(expectedBody), "Body Mismatch")
+ },
+ )
+}
+
//VerifyJSON returns a handler that verifies that the body of the request is a valid JSON representation
//matching the passed in JSON string. It does this using Gomega's MatchJSON method
//
diff --git a/ghttp/test_server_test.go b/ghttp/test_server_test.go
index 497e46c..292b51d 100644
--- a/ghttp/test_server_test.go
+++ b/ghttp/test_server_test.go
@@ -456,6 +456,27 @@
})
})
+ Describe("VerifyBody", func() {
+ BeforeEach(func() {
+ s.AppendHandlers(CombineHandlers(
+ VerifyRequest("POST", "/foo"),
+ VerifyBody([]byte("some body")),
+ ))
+ })
+
+ It("should verify the body", func() {
+ resp, err = http.Post(s.URL()+"/foo", "", bytes.NewReader([]byte("some body")))
+ Ω(err).ShouldNot(HaveOccurred())
+ })
+
+ It("should verify the body", func() {
+ failures := InterceptGomegaFailures(func() {
+ http.Post(s.URL()+"/foo", "", bytes.NewReader([]byte("wrong body")))
+ })
+ Ω(failures).Should(HaveLen(1))
+ })
+ })
+
Describe("VerifyJSON", func() {
BeforeEach(func() {
s.AppendHandlers(CombineHandlers(