Expect(guid).To(Equal("a-staging-guid")) Expect(request).To(Equal(stagingRequest)) }) Context("when the recipe was built successfully", func() { var fakeTaskDef = &models.TaskDefinition{Annotation: "test annotation"} BeforeEach(func() { fakeBackend.BuildRecipeReturns(fakeTaskDef, "a-guid", "a-domain", nil) }) It("does not send a staging complete message", func() { Expect(fakeCcClient.StagingCompleteCallCount()).To(Equal(0)) }) It("creates a task on Diego", func() { Expect(fakeDiegoClient.DesireTaskCallCount()).To(Equal(1)) _, _, resultingTaskDef := fakeDiegoClient.DesireTaskArgsForCall(0) Expect(resultingTaskDef).To(Equal(fakeTaskDef)) }) Context("when creating the task succeeds", func() { It("does not send a staging failure response", func() { Expect(fakeCcClient.StagingCompleteCallCount()).To(Equal(0)) }) }) Context("when the task has already been created", func() { BeforeEach(func() { fakeDiegoClient.DesireTaskReturns(models.NewError(models.Error_ResourceExists, "ok, this task already exists")) })
&models.RunAction{}, )), } buildpackBuilder.BuildTaskReturns(newlyDesiredTask, nil) }) It("logs the incoming and outgoing request", func() { Eventually(logger.TestSink.Buffer).Should(gbytes.Say("serving")) Eventually(logger.TestSink.Buffer).Should(gbytes.Say("desiring-task")) }) It("creates the task", func() { Expect(buildpackBuilder.BuildTaskCallCount()).To(Equal(1)) Expect(buildpackBuilder.BuildTaskArgsForCall(0)).To(Equal(&taskRequest)) Expect(fakeBBSClient.DesireTaskCallCount()).To(Equal(1)) guid, domain, taskDefinition := fakeBBSClient.DesireTaskArgsForCall(0) Expect(guid).To(Equal("the-task-guid")) Expect(domain).To(Equal("cf-tasks")) Expect(taskDefinition).To(Equal(newlyDesiredTask)) }) It("responds with 202 Accepted", func() { Expect(responseRecorder.Code).To(Equal(http.StatusAccepted)) }) Context("when an invalid desire task message is received", func() { BeforeEach(func() { reader := bytes.NewBufferString("not valid json") request.Body = ioutil.NopCloser(reader)