}) }) } itFailsWhenTheContainerIsNotFound := func(example func() error) { Context("when the container is not found", func() { It("fails", func() { serverBackend.LookupReturns(nil, errors.New("not found")) Ω(example()).Should(MatchError("not found")) }) }) } Describe("stopping", func() { It("stops the container and sends a StopResponse", func() { err := container.Stop(true) Ω(err).ShouldNot(HaveOccurred()) Ω(fakeContainer.StopArgsForCall(0)).Should(Equal(true)) }) itFailsWhenTheContainerIsNotFound(func() error { return container.Stop(true) }) Context("when stopping the container fails", func() { BeforeEach(func() { fakeContainer.StopReturns(errors.New("oh no!")) }) It("returns an error", func() {
}) }) Describe("Stop Container", func() { Context("container exists", func() { BeforeEach(func() { server.AppendHandlers( ghttp.CombineHandlers( ghttp.VerifyRequest("POST", "/api/containers/containerhandle/stop"), ghttp.RespondWith(200, ""), ), ) }) It("should stop the container", func() { err := container.Stop(true) Expect(err).NotTo(HaveOccurred()) Expect(server.ReceivedRequests()).Should(HaveLen(1)) }) }) Context("container does not exist", func() { BeforeEach(func() { server.AppendHandlers( ghttp.CombineHandlers( ghttp.VerifyRequest("POST", "/api/containers/containerhandle/stop"), ghttp.RespondWith(404, ""), ), ) })
Describe("a container's state", func() { It("is still reported", func() { info, err := container.Info() Expect(err).ToNot(HaveOccurred()) Expect(info.State).To(Equal("active")) restartGarden(gardenArgs...) info, err = container.Info() Expect(err).ToNot(HaveOccurred()) Expect(info.State).To(Equal("active")) err = container.Stop(false) Expect(err).ToNot(HaveOccurred()) restartGarden(gardenArgs...) info, err = container.Info() Expect(err).ToNot(HaveOccurred()) Expect(info.State).To(Equal("stopped")) }) }) Describe("a container's network", func() { It("does not get reused", func() { infoA, err := container.Info() Expect(err).ToNot(HaveOccurred())