ghttp.VerifyRequest("POST", fmt.Sprintf("/internal/staging/%s/completed", stagingGuid)), ghttp.VerifyBasicAuth("username", "password"), ghttp.RespondWith(200, `{}`), func(w http.ResponseWriter, req *http.Request) { body, err := ioutil.ReadAll(req.Body) defer req.Body.Close() Expect(err).NotTo(HaveOccurred()) Expect(body).To(Equal(expectedBody)) }, ), ) }) It("sends the request payload to the CC without modification", func() { err := ccClient.StagingComplete(stagingGuid, expectedBody, logger) Expect(err).NotTo(HaveOccurred()) }) }) Describe("TLS certificate validation", func() { BeforeEach(func() { fakeCC = ghttp.NewTLSServer() // self-signed certificate fakeCC.AppendHandlers( ghttp.CombineHandlers( ghttp.VerifyRequest("POST", fmt.Sprintf("/internal/staging/%s/completed", stagingGuid)), ghttp.VerifyBasicAuth("username", "password"), ghttp.RespondWith(200, `{}`), ), )
if fakeCC.HTTPTestServer != nil { fakeCC.Close() } }) Describe("Successfully calling the Cloud Controller", func() { It("calls the callback URL if it exists", func() { completionCallback = fmt.Sprintf("%s/awesome/potato/staging_complete", fakeCC.URL()) fakeCC.AppendHandlers( ghttp.CombineHandlers( ghttp.VerifyRequest("POST", "/awesome/potato/staging_complete"), ), ) err := ccClient.StagingComplete(stagingGuid, completionCallback, []byte(`{}`), logger) Expect(err).NotTo(HaveOccurred()) }) Context("When CC's staging request does not provide a callback URL", func() { var expectedBody = []byte(`{ "key": "value" }`) BeforeEach(func() { fakeCC.AppendHandlers( ghttp.CombineHandlers( ghttp.VerifyRequest("POST", fmt.Sprintf("/internal/staging/%s/completed", stagingGuid)), ghttp.VerifyBasicAuth("username", "password"), ghttp.RespondWith(200, `{}`), func(w http.ResponseWriter, req *http.Request) { body, err := ioutil.ReadAll(req.Body) defer req.Body.Close()