It("returns a BadRequest error", func() { Expect(responseRecorder.Code).To(Equal(http.StatusBadRequest)) }) }) }) }) Describe("StopStaging", func() { BeforeEach(func() { stagingTask := &models.Task{ TaskGuid: "a-staging-guid", TaskDefinition: &models.TaskDefinition{Annotation: `{"lifecycle": "fake-backend"}`}, } 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"))
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", })) }) }) Context("when the task is not found", func() { BeforeEach(func() { fakeClient.TaskByGuidReturns(nil, models.ErrResourceNotFound) }) It("responds with a 404 NOT FOUND", func() { Expect(responseRecorder.Code).To(Equal(http.StatusNotFound)) }) It("responds with a TaskNotFound error in the body", func() { var taskError receptor.Error err := json.Unmarshal(responseRecorder.Body.Bytes(), &taskError) Expect(err).NotTo(HaveOccurred()) Expect(taskError).To(Equal(receptor.Error{ Type: receptor.TaskNotFound, Message: "task with guid 'the-task-guid' not found", }))