Expect(linkName).To(Equal("dns0"))
	})

	It("sets the address on the dummy device in the sandbox namespace", func() {
		ns.ExecuteStub = func(callback func(*os.File) error) error {
			Expect(addressManager.AddAddressCallCount()).To(Equal(0))
			err := callback(nil)
			Expect(addressManager.AddAddressCallCount()).To(Equal(1))
			return err
		}

		err := startDNS.Execute(context)
		Expect(err).NotTo(HaveOccurred())

		Expect(addressManager.AddAddressCallCount()).To(Equal(1))
		ifName, address := addressManager.AddAddressArgsForCall(0)
		Expect(ifName).To(Equal("dns0"))
		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())
		addAddress = commands.AddAddress{
			InterfaceName: "my-interface",
			Address: net.IPNet{
				IP:   net.ParseIP("192.168.1.1"),
				Mask: net.CIDRMask(24, 32),
			},
		}
	})

	It("adds the address to the interface", func() {
		err := addAddress.Execute(context)
		Expect(err).NotTo(HaveOccurred())

		Expect(addressManager.AddAddressCallCount()).To(Equal(1))
		interfaceName, address := addressManager.AddAddressArgsForCall(0)
		Expect(interfaceName).To(Equal("my-interface"))
		Expect(address.String()).To(Equal("192.168.1.1/24"))
	})

	Context("when adding the address fails", func() {
		BeforeEach(func() {
			addressManager.AddAddressReturns(errors.New("no address for you"))
		})

		It("wraps and propagates the error", func() {
			err := addAddress.Execute(context)
			Expect(err).To(MatchError("add address: no address for you"))
		})
	})