示例#1
0
				fakeConnection.StreamInReturns(
					disaster)
			})

			It("returns the error", func() {
				err := container.StreamIn(garden.StreamInSpec{
					Path: "to",
				})
				Ω(err).Should(Equal(disaster))
			})
		})
	})

	Describe("StreamOut", func() {
		It("sends a stream out request", func() {
			fakeConnection.StreamOutReturns(ioutil.NopCloser(strings.NewReader("kewl")), nil)

			reader, err := container.StreamOut(garden.StreamOutSpec{
				User: "******",
				Path: "from",
			})
			bytes, err := ioutil.ReadAll(reader)
			Ω(err).ShouldNot(HaveOccurred())
			Ω(string(bytes)).Should(Equal("kewl"))

			handle, spec := fakeConnection.StreamOutArgsForCall(0)
			Ω(handle).Should(Equal("some-handle"))
			Ω(spec.Path).Should(Equal("from"))
			Ω(spec.User).Should(Equal("deandra"))
		})
	})

	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()))
			})