It("responds with 202 Accepted", func() { Expect(resp.Code).To(Equal(http.StatusAccepted)) }) It("eventually stops the instance", func() { Eventually(fakeClient.StopContainerCallCount).Should(Equal(1)) processGuid, instanceGuid := fakeClient.StopContainerArgsForCall(0) Expect(processGuid).To(Equal(processGuid)) Expect(instanceGuid).To(Equal(instanceGuid)) }) }) Context("but StopContainer fails", func() { BeforeEach(func() { fakeClient.StopContainerReturns(errors.New("fail")) }) It("responds with 500 Internal Server Error", func() { Expect(resp.Code).To(Equal(http.StatusInternalServerError)) }) }) }) Context("when the request is invalid", func() { BeforeEach(func() { req.Body = ioutil.NopCloser(bytes.NewBufferString("foo")) }) It("responds with 400 Bad Request", func() { Expect(resp.Code).To(Equal(http.StatusBadRequest))
client = new(fake_client.FakeClient) logger = lagertest.NewTestLogger("test") stopper = lrp_stopper.New(cellID, client, logger) }) Describe("StopInstance", func() { var returnedError error JustBeforeEach(func() { returnedError = stopper.StopInstance(actualLRP.ProcessGuid, actualLRP.InstanceGuid) }) It("succeeds", func() { Expect(returnedError).NotTo(HaveOccurred()) }) Context("when the executor returns an unexpected error", func() { BeforeEach(func() { client.StopContainerReturns(errors.New("use of closed network connection")) }) It("returns an error", func() { Expect(returnedError).To(HaveOccurred()) Expect(returnedError.Error()).To(ContainSubstring("use of closed network connection")) }) }) }) })
}) Context("when stopping succeeds", func() { It("returns true", func() { Expect(result).To(BeTrue()) }) It("logs the stopping", func() { Expect(logger).To(gbytes.Say(sessionPrefix + ".stopping-container")) Expect(logger).To(gbytes.Say(sessionPrefix + ".succeeded-stopping-container")) }) }) Context("when stopping fails", func() { BeforeEach(func() { executorClient.StopContainerReturns(errors.New("ka-boom")) }) It("returns false", func() { Expect(result).To(BeFalse()) }) It("logs the failure", func() { Expect(logger).To(gbytes.Say(sessionPrefix + ".failed-stopping-container")) }) }) }) Describe("DeleteContainer", func() { var result bool