fakeDiegoClient.TaskByGuidReturns(stagingTask, nil) }) JustBeforeEach(func() { req, err := http.NewRequest("POST", "/v1/staging/a-staging-guid", nil) Expect(err).NotTo(HaveOccurred()) req.Form = url.Values{":staging_guid": {"a-staging-guid"}} handler.StopStaging(responseRecorder, req) }) Context("when receiving a stop staging request", func() { It("retrieves the current staging task by guid", func() { Expect(fakeDiegoClient.TaskByGuidCallCount()).To(Equal(1)) Expect(fakeDiegoClient.TaskByGuidArgsForCall(0)).To(Equal("a-staging-guid")) }) Context("when an in-flight staging task is not found", func() { BeforeEach(func() { fakeDiegoClient.TaskByGuidReturns(&models.Task{}, models.ErrResourceNotFound) }) It("returns StatusNotFound", func() { Expect(responseRecorder.Code).To(Equal(http.StatusNotFound)) }) }) Context("when retrieving the current task fails", func() { BeforeEach(func() {
}) JustBeforeEach(func() { var err error request, err = http.NewRequest("", fmt.Sprintf("http://example.com/?:task_guid=%s", taskGuid), nil) Expect(err).NotTo(HaveOccurred()) handler.GetByGuid(responseRecorder, request) }) Context("when the guid is not provided", func() { BeforeEach(func() { taskGuid = "" }) It("does not call TaskByGuid", func() { Expect(fakeClient.TaskByGuidCallCount()).To(Equal(0)) }) It("responds with a 400 Bad Request", func() { handler.GetByGuid(responseRecorder, request) Expect(responseRecorder.Code).To(Equal(http.StatusBadRequest)) }) It("responds with a relevant error message", func() { var taskError receptor.Error err := json.Unmarshal(responseRecorder.Body.Bytes(), &taskError) Expect(err).NotTo(HaveOccurred()) Expect(taskError).To(Equal(receptor.Error{ Type: receptor.InvalidRequest, Message: "task_guid missing from request",