It("returns error when blobstore path is not a string", func() { options := map[string]interface{}{"blobstore_path": 443} blobstore = NewLocalBlobstore(fs, uuidGen, options) err := blobstore.Validate() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("blobstore_path must be a string")) }) }) Describe("Get", func() { It("local get", func() { fs.WriteFileString(fakeBlobstorePath+"/fake-blob-id", "fake contents") tempFile, err := fs.TempFile("bosh-blobstore-local-TestLocalGet") Expect(err).ToNot(HaveOccurred()) fs.ReturnTempFile = tempFile defer fs.RemoveAll(tempFile.Name()) _, err = blobstore.Get("fake-blob-id", "") Expect(err).ToNot(HaveOccurred()) fileStats := fs.GetFileTestStat(tempFile.Name()) Expect(fileStats).ToNot(BeNil()) Expect("fake contents").To(Equal(fileStats.StringContents())) }) It("local get errs when temp file create errs", func() { fs.TempFileError = errors.New("fake-error")
}) It("external validate errors when command not in path", func() { options := map[string]interface{}{} blobstore := NewExternalBlobstore("fake-provider", options, fs, runner, uuidGen, configPath) err := blobstore.Validate() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("not found in PATH")) }) }) Describe("Get", func() { It("external get", func() { tempFile, err := fs.TempFile("bosh-blobstore-external-TestGet") Expect(err).ToNot(HaveOccurred()) fs.ReturnTempFile = tempFile defer fs.RemoveAll(tempFile.Name()) 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(), }))