Describe("Setup", func() { It("brings up the loopback adapter in the sandbox namespace", func() { sbNamespace.ExecuteStub = func(callback func(*os.File) error) error { Expect(linkFactory.SetUpCallCount()).To(Equal(0)) err := callback(nil) Expect(linkFactory.SetUpCallCount()).To(Equal(1)) return err } err := sb.Setup() Expect(err).NotTo(HaveOccurred()) Expect(sbNamespace.ExecuteCallCount()).To(Equal(1)) Expect(linkFactory.SetUpCallCount()).To(Equal(1)) linkName := linkFactory.SetUpArgsForCall(0) Expect(linkName).To(Equal("lo")) }) Context("when namespace execution fails", func() { BeforeEach(func() { sbNamespace.ExecuteReturns(errors.New("boysenberry")) }) It("returns a meaningful error", func() { err := sb.Setup() Expect(err).To(MatchError("setup failed: boysenberry")) }) }) Context("when setting the link up fails", func() {
Expect(address.IP.String()).To(Equal("10.10.10.10")) }) It("ups the dummy device in the sandbox namespace", func() { ns.ExecuteStub = func(callback func(*os.File) error) error { Expect(linkFactory.SetUpCallCount()).To(Equal(0)) err := callback(nil) Expect(linkFactory.SetUpCallCount()).To(Equal(1)) return err } err := startDNS.Execute(context) Expect(err).NotTo(HaveOccurred()) Expect(linkFactory.SetUpCallCount()).To(Equal(1)) Expect(linkFactory.SetUpArgsForCall(0)).To(Equal("dns0")) }) It("creates a listener in the sandbox namespace", func() { ns.ExecuteStub = func(callback func(*os.File) error) error { Expect(listenerFactory.ListenUDPCallCount()).To(Equal(0)) err := callback(nil) Expect(listenerFactory.ListenUDPCallCount()).To(Equal(1)) return err } expectedAddress, err := net.ResolveUDPAddr("udp", "10.10.10.10:53") Expect(err).NotTo(HaveOccurred()) err = startDNS.Execute(context)
BeforeEach(func() { context = &fakes.Context{} linkFactory = &fakes.LinkFactory{} context.LinkFactoryReturns(linkFactory) setLinkUp = commands.SetLinkUp{ LinkName: "link-name", } }) It("sets the link up", func() { err := setLinkUp.Execute(context) Expect(err).NotTo(HaveOccurred()) Expect(linkFactory.SetUpCallCount()).To(Equal(1)) Expect(linkFactory.SetUpArgsForCall(0)).To(Equal("link-name")) }) Context("when setting the link UP fails", func() { It("wraps and propagates the error", func() { linkFactory.SetUpReturns(errors.New("welp")) err := setLinkUp.Execute(context) Expect(err).To(MatchError("set link up: welp")) }) }) Describe("String", func() { It("describes itself", func() { Expect(setLinkUp.String()).To(Equal("ip link set link-name up")) })