}
		})

		JustBeforeEach(func() {
			request = newTestRequest(requestBody)
			handler.RetireActualLRP(responseRecorder, request)
		})

		Context("when retireing the actual lrp in the DB succeeds", func() {
			BeforeEach(func() {
				fakeActualLRPDB.RetireActualLRPReturns(nil)
			})

			It("retires the actual lrp by process guid and index", func() {
				Expect(fakeActualLRPDB.RetireActualLRPCallCount()).To(Equal(1))
				_, actualKey := fakeActualLRPDB.RetireActualLRPArgsForCall(0)
				Expect(*actualKey).To(Equal(key))

				Expect(responseRecorder.Code).To(Equal(http.StatusOK))

				response := &models.ActualLRPLifecycleResponse{}
				err := response.Unmarshal(responseRecorder.Body.Bytes())
				Expect(err).NotTo(HaveOccurred())

				Expect(response.Error).To(BeNil())
			})
		})

		Context("when retiring the actual lrp fails", func() {
			BeforeEach(func() {
				fakeActualLRPDB.RetireActualLRPReturns(models.ErrUnknownError)
			request = newTestRequest(requestBody)
			handler.RetireActualLRP(responseRecorder, request)
		})

		Context("when retireing the actual lrp in the DB succeeds", func() {
			BeforeEach(func() {
				fakeActualLRPDB.RetireActualLRPReturns(nil)
			})

			It("responds with 204 No Content", func() {
				Expect(responseRecorder.Code).To(Equal(http.StatusNoContent))
			})

			It("retires the actual lrp by process guid and index", func() {
				Expect(fakeActualLRPDB.RetireActualLRPCallCount()).To(Equal(1))
				_, actualRequest := fakeActualLRPDB.RetireActualLRPArgsForCall(0)
				Expect(actualRequest).To(Equal(requestBody))
			})
		})

		Context("when the request is invalid", func() {
			BeforeEach(func() {
				requestBody = &models.RetireActualLRPRequest{}
			})

			It("responds with 400 Bad Request", func() {
				Expect(responseRecorder.Code).To(Equal(http.StatusBadRequest))
			})
		})

		Context("when parsing the body retires", func() {