}) Context("when parsing the listen address fails", func() { BeforeEach(func() { startDNS.ListenAddress = "some-bogus-address" }) It("returns a meaningful error", func() { err := startDNS.Execute(context) Expect(err).To(MatchError(MatchRegexp("resolve udp address:.*some-bogus-address"))) }) }) Context("when creating the dummy link fails", func() { BeforeEach(func() { linkFactory.CreateDummyReturns(errors.New("pineapple")) }) It("returns a meaningful error", func() { err := startDNS.Execute(context) Expect(err).To(MatchError("namespace execute: create dummy: pineapple")) }) }) Context("when adding the address fails", func() { BeforeEach(func() { addressManager.AddAddressReturns(errors.New("pineapple")) }) It("returns a meaningful error", func() { err := startDNS.Execute(context)
Name: "my-dummy", } }) It("uses the factory to create the adapter", func() { err := createDummy.Execute(context) Expect(err).NotTo(HaveOccurred()) Expect(linkFactory.CreateDummyCallCount()).To(Equal(1)) name := linkFactory.CreateDummyArgsForCall(0) Expect(name).To(Equal("my-dummy")) }) Context("when creating the dummy link fails", func() { BeforeEach(func() { linkFactory.CreateDummyReturns(errors.New("no dummy for you, dummy")) }) It("wraps and propagates the error", func() { err := createDummy.Execute(context) Expect(err).To(MatchError("create dummy: no dummy for you, dummy")) }) }) Describe("String", func() { It("is self describing", func() { Expect(createDummy.String()).To(Equal("ip link add my-dummy type dummy")) }) }) })