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") Expect(err).NotTo(HaveOccurred()) Expect(ioutil.ReadAll(dropletReader)).To(BeEquivalentTo("some droplet reader")) Expect(ioutil.ReadAll(metadataReader)).To(BeEquivalentTo("some metadata reader")) }) Context("when the droplet name does not have an associated droplet", func() { It("returns an error", func() { _, _, err := dropletRunner.ExportDroplet("no-such-droplet") Expect(err).To(MatchError("droplet not found: some missing droplet error")) }) }) Context("when the droplet name does not have an associated metadata", func() { It("returns an error", func() { _, _, err := dropletRunner.ExportDroplet("no-such-metadata")