Describe("StreamOut", func() {
		handle := "suitcase"

		var gotReader io.ReadCloser

		itRetries(func() error {
			var err error
			gotReader, err = conn.StreamOut(handle, garden.StreamOutSpec{
				Path: "/etc/passwd",
				User: "******",
			})
			return err
		}, func(err error) {
			innerConnection.StreamOutReturns(gbytes.NewBuffer(), err)
		}, func() int {
			return innerConnection.StreamOutCallCount()
		}, func() {
			It("calls through to garden", func() {
				Ω(innerConnection.StreamOutCallCount()).Should(Equal(1))

				calledHandle, calledSpec := innerConnection.StreamOutArgsForCall(0)
				Ω(calledHandle).Should(Equal(handle))
				Ω(calledSpec.Path).Should(Equal("/etc/passwd"))
				Ω(calledSpec.User).Should(Equal("admin"))
			})

			It("returns the reader", func() {
				Ω(gotReader).Should(Equal(gbytes.NewBuffer()))
			})
		})
	})
	Describe("StreamOut", func() {
		handle := "suitcase"

		var gotReader io.ReadCloser

		itRetries(func() error {
			var err error
			gotReader, err = conn.StreamOut(handle, garden.StreamOutSpec{
				Path: "/etc/passwd",
				User: "******",
			})
			return err
		}, func(err error) {
			innerConnection.StreamOutReturns(gbytes.NewBuffer(), err)
		}, func() int {
			return innerConnection.StreamOutCallCount()
		}, func() {
			It("calls through to garden", func() {
				Expect(innerConnection.StreamOutCallCount()).To(Equal(1))

				calledHandle, calledSpec := innerConnection.StreamOutArgsForCall(0)
				Expect(calledHandle).To(Equal(handle))
				Expect(calledSpec.Path).To(Equal("/etc/passwd"))
				Expect(calledSpec.User).To(Equal("admin"))
			})

			It("returns the reader", func() {
				Expect(gotReader).To(Equal(gbytes.NewBuffer()))
			})
		})
	})