fileName, err := blobstore.Get("fake-blob-id", "") Expect(err).ToNot(HaveOccurred()) Expect(len(runner.RunCommands)).To(Equal(1)) Expect(runner.RunCommands[0]).To(Equal([]string{ "bosh-blobstore-fake-provider", "-c", configPath, "get", "fake-blob-id", tempFile.Name(), })) Expect(fileName).To(Equal(tempFile.Name())) Expect(fs.FileExists(tempFile.Name())).To(BeTrue()) }) It("external get errs when temp file create errs", func() { fs.TempFileError = errors.New("fake-error") fileName, err := blobstore.Get("fake-blob-id", "") Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-error")) Expect(fileName).To(BeEmpty()) }) It("external get errs when external cli errs", func() { tempFile, err := fs.TempFile("bosh-blobstore-external-TestGetErrsWhenExternalCliErrs") Expect(err).ToNot(HaveOccurred()) fs.ReturnTempFile = tempFile defer fs.RemoveAll(tempFile.Name())
Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("failed")) }) It("cleans temporary files", func() { _, _, err := scriptRunner.Run("") Expect(err).ToNot(HaveOccurred()) Expect(fs.FileExists("/fake-temp-file")).To(BeFalse()) Expect(fs.FileExists("/fake-temp-file.fake-ext")).To(BeFalse()) }) Context("filesystem errors", func() { Context("when creating Tempfile fails", func() { It("errors out", func() { fs.TempFileError = errors.New("boo") _, _, err := scriptRunner.Run("") Expect(err.Error()).To(Equal("Creating tempfile: boo")) }) }) Context("when writing to the Tempfile fails", func() { It("errors out", func() { fs.WriteFileError = errors.New("foo") _, _, err := scriptRunner.Run("") Expect(err).To(HaveOccurred()) Expect(err.Error()).To(Equal("Writing to tempfile: foo")) }) })