Expect(delegate).To(Equal(putDelegate)) // TODO: Can we test the map values? Expect(sources).To(HaveKey("some-source")) Expect(sources).To(HaveKey("some-other-source")) Expect(sources).To(HaveKey("some-mounted-source")) }) It("puts the resource with the correct source and params, and the full repository as the artifact source", func() { Expect(fakeResource.PutCallCount()).To(Equal(1)) _, putSource, putParams, putArtifactSource := fakeResource.PutArgsForCall(0) Expect(putSource).To(Equal(resourceConfig.Source)) Expect(putParams).To(Equal(params)) dest := new(fakes.FakeArtifactDestination) err := putArtifactSource.StreamTo(dest) Expect(err).NotTo(HaveOccurred()) Expect(fakeSource.StreamToCallCount()).To(Equal(1)) sourceDest := fakeSource.StreamToArgsForCall(0) someStream := new(bytes.Buffer) err = sourceDest.StreamIn("foo", someStream) Expect(err).NotTo(HaveOccurred()) Expect(dest.StreamInCallCount()).To(Equal(1)) destPath, stream := dest.StreamInArgsForCall(0) Expect(destPath).To(Equal("some-source/foo"))
}) }) Describe("the source registered with the repository", func() { var artifactSource ArtifactSource JustBeforeEach(func() { Eventually(process.Wait()).Should(Receive(BeNil())) var found bool artifactSource, found = repo.SourceFor(sourceName) Ω(found).Should(BeTrue()) }) Describe("streaming to a destination", func() { var fakeDestination *fakes.FakeArtifactDestination BeforeEach(func() { fakeDestination = new(fakes.FakeArtifactDestination) }) Context("when the resource can stream out", func() { var ( streamedOut io.ReadCloser ) BeforeEach(func() { streamedOut = gbytes.NewBuffer() fakeVersionedSource.StreamOutReturns(streamedOut, nil) })
}) }) Describe("the source registered with the repository", func() { var artifactSource ArtifactSource JustBeforeEach(func() { Eventually(process.Wait()).Should(Receive(BeNil())) var found bool artifactSource, found = repo.SourceFor(sourceName) Expect(found).To(BeTrue()) }) Describe("streaming to a destination", func() { var fakeDestination *fakes.FakeArtifactDestination BeforeEach(func() { fakeDestination = new(fakes.FakeArtifactDestination) }) Context("when the resource can stream out", func() { var ( streamedOut io.ReadCloser ) BeforeEach(func() { streamedOut = gbytes.NewBuffer() fakeVersionedSource.StreamOutReturns(streamedOut, nil) })
It("yields the second source by the given name", func() { source, found := repo.SourceFor("second-source") Expect(source).To(Equal(firstSource)) Expect(found).To(BeTrue()) }) It("yields nothing for unregistered names", func() { source, found := repo.SourceFor("bogus-source") Expect(source).To(BeNil()) Expect(found).To(BeFalse()) }) }) Describe("StreamTo", func() { var fakeDestination *fakes.FakeArtifactDestination var streamErr error BeforeEach(func() { fakeDestination = new(fakes.FakeArtifactDestination) }) JustBeforeEach(func() { streamErr = repo.StreamTo(fakeDestination) }) It("succeeds", func() { Expect(streamErr).NotTo(HaveOccurred()) }) It("streams both sources to the destination under subdirectories", func() {
sid, typ, tags := fakeTracker.InitArgsForCall(0) Ω(sid).Should(Equal(resource.Session{ ID: identifier, })) Ω(typ).Should(Equal(resource.ResourceType("some-resource-type"))) Ω(tags).Should(ConsistOf("some", "tags")) }) It("puts the resource with the correct source and params, and the full repository as the artifact source", func() { Ω(fakeResource.PutCallCount()).Should(Equal(1)) _, putSource, putParams, putArtifactSource := fakeResource.PutArgsForCall(0) Ω(putSource).Should(Equal(resourceConfig.Source)) Ω(putParams).Should(Equal(params)) dest := new(fakes.FakeArtifactDestination) err := putArtifactSource.StreamTo(dest) Ω(err).ShouldNot(HaveOccurred()) Ω(fakeSource.StreamToCallCount()).Should(Equal(1)) sourceDest := fakeSource.StreamToArgsForCall(0) someStream := new(bytes.Buffer) err = sourceDest.StreamIn("foo", someStream) Ω(err).ShouldNot(HaveOccurred()) Ω(dest.StreamInCallCount()).Should(Equal(1)) destPath, stream := dest.StreamInArgsForCall(0)
It("yields the second source by the given name", func() { source, found := repo.SourceFor("second-source") Ω(source).Should(Equal(firstSource)) Ω(found).Should(BeTrue()) }) It("yields nothing for unregistered names", func() { source, found := repo.SourceFor("bogus-source") Ω(source).Should(BeNil()) Ω(found).Should(BeFalse()) }) }) Describe("StreamTo", func() { var fakeDestination *fakes.FakeArtifactDestination var streamErr error BeforeEach(func() { fakeDestination = new(fakes.FakeArtifactDestination) }) JustBeforeEach(func() { streamErr = repo.StreamTo(fakeDestination) }) It("succeeds", func() { Ω(streamErr).ShouldNot(HaveOccurred()) }) It("streams both sources to the destination under subdirectories", func() {