}) }) Describe("ExportDroplet", func() { BeforeEach(func() { fakeDropletReader := ioutil.NopCloser(strings.NewReader("some droplet reader")) fakeMetadataReader := ioutil.NopCloser(strings.NewReader("some metadata reader")) fakeBlobStore.DownloadStub = func(path string) (io.ReadCloser, error) { switch path { case "drippy/droplet.tgz": return fakeDropletReader, nil case "drippy/result.json": return fakeMetadataReader, nil case "no-such-droplet/droplet.tgz": return nil, errors.New("some missing droplet error") case "no-such-metadata/droplet.tgz": return fakeDropletReader, nil case "no-such-metadata/result.json": return nil, errors.New("some missing metadata error") default: return nil, errors.New("fake GetReader called with invalid arguments") } } }) It("returns IO readers for the droplet and its metadata", func() { dropletReader, metadataReader, err := dropletRunner.ExportDroplet("drippy") defer dropletReader.Close() defer metadataReader.Close() Expect(err).NotTo(HaveOccurred()) Expect(ioutil.ReadAll(dropletReader)).To(BeEquivalentTo("some droplet reader"))