})

	It("uses the network id to get the VNI", func() {
		_, err := controller.Add(payload)
		Expect(err).NotTo(HaveOccurred())

		Expect(networkMapper.GetVNICallCount()).To(Equal(1))
		Expect(networkMapper.GetVNIArgsForCall(0)).To(Equal("network-id-1"))
	})

	It("allocates an IP and returns the ipamResult", func() {
		returnedIPAMResult, err := controller.Add(payload)
		Expect(err).NotTo(HaveOccurred())

		Expect(ipAllocator.AllocateIPCallCount()).To(Equal(1))
		networkID, containerID := ipAllocator.AllocateIPArgsForCall(0)
		Expect(networkID).To(Equal("network-id-1"))
		Expect(containerID).To(Equal("container-id"))

		Expect(returnedIPAMResult).To(BeIdenticalTo(ipamResult))
	})

	Context("when getting the VNI fails", func() {
		It("aborts and returns a wrapped error", func() {
			networkMapper.GetVNIReturns(0, errors.New("some error"))

			_, err := controller.Add(payload)
			Expect(err).To(MatchError("get vni: some error"))

			Expect(ipAllocator.AllocateIPCallCount()).To(Equal(0))
		})