Describe("Net out", func() { It("delegates to the filter", func() { rule := garden.NetOutRule{} err := container.NetOut(rule) Expect(err).ToNot(HaveOccurred()) Expect(fakeFilter.NetOutCallCount()).To(Equal(1)) passedRule := fakeFilter.NetOutArgsForCall(0) Expect(passedRule).To(Equal(rule)) }) Context("when the filter fails", func() { disaster := errors.New("oh no!") BeforeEach(func() { fakeFilter.NetOutReturns(disaster) }) It("returns the error", func() { err := container.NetOut(garden.NetOutRule{}) Expect(err).To(Equal(disaster)) }) }) }) Describe("Properties", func() { Describe("CRUD", func() { It("can get a property", func() { value, err := container.Property("property-name") Expect(err).ToNot(HaveOccurred()) Expect(value).To(Equal("property-value"))
}) It("redoes net-outs", func() { Expect(container.Restore(linux_backend.LinuxContainerSpec{ NetOuts: []garden.NetOutRule{netOutRule1, netOutRule2}, Resources: containerResources, })).To(Succeed()) Expect(fakeFilter.NetOutCallCount()).To(Equal(2)) Expect(fakeFilter.NetOutArgsForCall(0)).To(Equal(netOutRule1)) Expect(fakeFilter.NetOutArgsForCall(1)).To(Equal(netOutRule2)) }) Context("when applying a netout rule fails", func() { It("returns an error", func() { fakeFilter.NetOutReturns(errors.New("didn't work")) Expect(container.Restore( linux_backend.LinuxContainerSpec{ NetOuts: []garden.NetOutRule{{}}, Resources: containerResources, })).To(MatchError("didn't work")) }) }) It("redoes network setup and net-ins", func() { err := container.Restore(linux_backend.LinuxContainerSpec{ State: "active", Events: []string{}, Resources: containerResources,