Expect(buildpackBuilder.ExtractExposedPortsCallCount()).To(Equal(0)) Expect(dockerBuilder.ExtractExposedPortsCallCount()).To(Equal(1)) Expect(dockerBuilder.ExtractExposedPortsArgsForCall(0)).To(Equal(&desireAppRequest)) }) }) }) Context("when an invalid desire app message is received", func() { BeforeEach(func() { reader := bytes.NewBufferString("not valid json") request.Body = ioutil.NopCloser(reader) }) It("does not call the bbs", func() { Expect(fakeBBS.RetireActualLRPCallCount()).To(BeZero()) }) It("responds with 400 Bad Request", func() { Expect(responseRecorder.Code).To(Equal(http.StatusBadRequest)) }) It("logs an error", func() { Eventually(logger.TestSink.Buffer).Should(gbytes.Say("parse-desired-app-request-failed")) }) It("does not touch the LRP", func() { Expect(fakeBBS.DesireLRPCallCount()).To(Equal(0)) Expect(fakeBBS.UpdateDesiredLRPCallCount()).To(Equal(0)) Expect(fakeBBS.RemoveDesiredLRPCallCount()).To(Equal(0)) })
} fakeBBS.ActualLRPGroupByProcessGuidAndIndexStub = func(processGuid string, index int) (*models.ActualLRPGroup, error) { return &models.ActualLRPGroup{ Instance: model_helpers.NewValidActualLRP(processGuid, int32(index)), }, nil } }) JustBeforeEach(func() { killHandler := handlers.NewKillIndexHandler(logger, fakeBBS) killHandler.KillIndex(responseRecorder, request) }) It("invokes the bbs to retire", func() { Expect(fakeBBS.RetireActualLRPCallCount()).To(Equal(1)) actualLRPKey := fakeBBS.RetireActualLRPArgsForCall(0) Expect(actualLRPKey.ProcessGuid).To(Equal("process-guid-0")) Expect(actualLRPKey.Index).To(BeEquivalentTo(1)) }) It("responds with 202 Accepted", func() { Expect(responseRecorder.Code).To(Equal(http.StatusAccepted)) }) Context("when the bbs fails", func() { BeforeEach(func() { fakeBBS.ActualLRPGroupByProcessGuidAndIndexReturns(nil, errors.New("oh no")) })