fakeDelegate.OutputDelegateReturns(fakePutDelegate)

				plan = atc.Plan{
					Location: nil,
					Put: &atc.PutPlan{
						Name: "some output",
					},
				}
			})

			It("constructs the step correctly", func() {
				build, err := execEngine.CreateBuild(buildModel, plan)
				Ω(err).ShouldNot(HaveOccurred())
				build.Resume(logger)

				Ω(fakeFactory.PutCallCount()).Should(Equal(1))
				workerID, delegate, _, _, _ := fakeFactory.PutArgsForCall(0)
				Ω(workerID).Should(Equal(worker.Identifier{
					BuildID: 84,
					Type:    worker.ContainerTypePut,
					Name:    "some output",
				}))

				Ω(delegate).Should(Equal(fakePutDelegate))
				_, _, location := fakeDelegate.OutputDelegateArgsForCall(0)
				Ω(location).ShouldNot(BeNil())
			})
		})

		Context("task with nil location", func() {
			var (
				fakeDelegate.OutputDelegateReturns(fakePutDelegate)

				plan = atc.Plan{
					Location: nil,
					Put: &atc.PutPlan{
						Name: "some output",
					},
				}
			})

			It("constructs the step correctly", func() {
				build, err := execEngine.CreateBuild(logger, buildModel, plan)
				Expect(err).NotTo(HaveOccurred())
				build.Resume(logger)

				Expect(fakeFactory.PutCallCount()).To(Equal(1))
				logger, metadata, workerID, delegate, _, _, _ := fakeFactory.PutArgsForCall(0)
				Expect(logger).ToNot(BeNil())
				Expect(metadata).To(Equal(expectedMetadata))
				Expect(workerID).To(Equal(worker.Identifier{
					BuildID: 84,
					Type:    db.ContainerTypePut,
					Name:    "some output",
				}))

				Expect(delegate).To(Equal(fakePutDelegate))
				_, _, location := fakeDelegate.OutputDelegateArgsForCall(0)
				Expect(location).NotTo(BeNil())
			})
		})