Context("when reading the task from the BBS fails", func() {
			BeforeEach(func() {
				fakeClient.TaskByGuidReturns(nil, errors.New("Something went wrong"))
			})

			It("responds with an error", func() {
				Expect(responseRecorder.Code).To(Equal(http.StatusInternalServerError))
			})
		})

		Context("when the task is successfully found in the BBS", func() {
			var task *models.Task

			BeforeEach(func() {
				task = model_helpers.NewValidTask("the-task-guid")
				task.State = models.Task_Running
				fakeClient.TaskByGuidReturns(task, nil)
			})

			It("retrieves the task by the given guid", func() {
				guid := fakeClient.TaskByGuidArgsForCall(0)
				Expect(guid).To(Equal(task.TaskGuid))
			})

			It("gets the task", func() {
				Expect(responseRecorder.Code).To(Equal(http.StatusOK))

				var actualTask receptor.TaskResponse
				err := json.Unmarshal(responseRecorder.Body.Bytes(), &actualTask)
				Expect(err).NotTo(HaveOccurred())
func demoteToCompleted(task *models.Task) *models.Task {
	task.State = models.Task_Completed
	return task
}
					},
				},
			}
		})

		It("serializes the state", func() {
			EXPECTED_STATE_MAP := map[models.Task_State]string{
				models.Task_Invalid:   "INVALID",
				models.Task_Pending:   "PENDING",
				models.Task_Running:   "RUNNING",
				models.Task_Completed: "COMPLETED",
				models.Task_Resolving: "RESOLVING",
			}

			for modelState, jsonState := range EXPECTED_STATE_MAP {
				task.State = modelState
				Expect(serialization.TaskToResponse(task).State).To(Equal(jsonState))
			}
		})

		It("serializes the task's fields", func() {
			actualResponse := serialization.TaskToResponse(task)

			expectedResponse := receptor.TaskResponse{
				TaskGuid:      "the-task-guid",
				Domain:        "the-domain",
				CellID:        "the-cell-id",
				CreatedAt:     1234,
				FailureReason: "the-failure-reason",
				Failed:        true,
				Result:        "the-result",