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",
				}))