Context("when opening the container namespace fails", func() {
		BeforeEach(func() {
			namespaceOpener.OpenPathReturns(nil, errors.New("POTATO"))
		})

		It("should return a meaningful error", func() {
			err := deletor.Delete("some-interface-name", "/path/to/container/namespace", "sandbox-name", "some-vxlan")
			Expect(err).To(MatchError("open container netns: POTATO"))
		})
	})

	It("should construct the correct command sequence", func() {
		err := deletor.Delete("some-interface-name", "/path/to/container/namespace", "sandbox-name", "some-vxlan")
		Expect(err).NotTo(HaveOccurred())

		Expect(executor.ExecuteCallCount()).To(Equal(1))
		Expect(executor.ExecuteArgsForCall(0)).To(Equal(
			commands.All(
				commands.InNamespace{
					Namespace: containerNS,
					Command: commands.DeleteLink{
						LinkName: "some-interface-name",
					},
				},

				commands.CleanupSandbox{
					SandboxName:     "sandbox-name",
					VxlanDeviceName: "some-vxlan",
				},
			),
		))
					Dst: net.IPNet{
						IP:   net.ParseIP("192.168.2.5"),
						Mask: net.CIDRMask(24, 32),
					},
					GW: net.ParseIP("192.168.1.99"),
				}},
			},
		}

		sandboxNS = &fakes.Namespace{NameStub: func() string { return "sandbox ns sentinel" }}
		sandbox.NamespaceReturns(sandboxNS)

		sandboxRepo.GetReturns(sandbox, nil)

		ex.ExecuteStub = func(command executor.Command) error {
			switch ex.ExecuteCallCount() {
			case 3:
				nsCommand := command.(commands.InNamespace)
				getCommand := nsCommand.Command.(*commands.GetHardwareAddress)
				getCommand.Result = containerMAC
			}
			return nil
		}

		config = container.CreatorConfig{
			NetworkID:       "some-crazy-network-id",
			ContainerNsPath: "/some/container/ns/path",
			ContainerID:     "123456789012345",
			InterfaceName:   "container-link",
			VNI:             99,
			IPAMResult:      ipamResult,