}) 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(), }))
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("fetches the local blob contents", 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("errs when temp file create errs", func() { fs.TempFileError = errors.New("fake-error")
) func expectedLogFormat(tag, msg string) string { return fmt.Sprintf("\\[%s\\] [0-9]{4}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} %s\n", tag, msg) } var _ = Describe("NewFileLogger", func() { var ( fs *fakeboshsys.FakeFileSystem logFile boshsys.File ) BeforeEach(func() { fs = fakeboshsys.NewFakeFileSystem() var err error logFile, err = fs.TempFile("file-logger-test") Expect(err).ToNot(HaveOccurred()) err = logFile.Close() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { logFile.Close() fs.RemoveAll(logFile.Name()) }) It("logs the formatted DEBUG message to the file", func() { logger, logFile, err := New(boshlog.LevelDebug, logFile.Name(), DefaultLogFileMode, fs) Expect(err).ToNot(HaveOccurred()) logger.Debug("TAG", "some %s info to log", "awesome")