var ( innerBlobstore *fakeblob.FakeBlobstore logger boshlog.Logger retryableBlobstore boshblob.Blobstore ) BeforeEach(func() { innerBlobstore = &fakeblob.FakeBlobstore{} logger = boshlog.NewLogger(boshlog.LevelNone) retryableBlobstore = boshblob.NewRetryableBlobstore(innerBlobstore, 3, logger) }) Describe("Get", func() { Context("when inner blobstore succeeds before maximum number of get tries (first time)", func() { It("returns path without an error", func() { innerBlobstore.GetFileName = "fake-path" path, err := retryableBlobstore.Get("fake-blob-id", "fake-fingerprint") Expect(err).ToNot(HaveOccurred()) Expect(path).To(Equal("fake-path")) Expect(innerBlobstore.GetBlobIDs).To(Equal([]string{"fake-blob-id"})) Expect(innerBlobstore.GetFingerprints).To(Equal([]string{"fake-fingerprint"})) }) }) Context("when inner blobstore succeed exactly at maximum number of get tries", func() { It("returns path without an error", func() { innerBlobstore.GetFileNames = []string{"", "", "fake-last-path"} innerBlobstore.GetErrs = []error{ errors.New("fake-get-err-1"),
fixtureSHA1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709" ) var ( innerBlobstore *fakeblob.FakeBlobstore sha1VerifiableBlobstore boshblob.Blobstore ) BeforeEach(func() { innerBlobstore = &fakeblob.FakeBlobstore{} sha1VerifiableBlobstore = boshblob.NewSHA1VerifiableBlobstore(innerBlobstore) }) Describe("Get", func() { It("returns without an error if sha1 matches", func() { innerBlobstore.GetFileName = fixturePath fileName, err := sha1VerifiableBlobstore.Get("fake-blob-id", fixtureSHA1) Expect(err).ToNot(HaveOccurred()) Expect(innerBlobstore.GetBlobIDs).To(Equal([]string{"fake-blob-id"})) Expect(fileName).To(Equal(fixturePath)) }) It("returns error if sha1 does not match", func() { innerBlobstore.GetFileName = fixturePath incorrectSha1 := "some-incorrect-sha1" _, err := sha1VerifiableBlobstore.Get("fake-blob-id", incorrectSha1) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("SHA1 mismatch"))
blobID string blobSHA1 string fileName string fakeError error ) BeforeEach(func() { blobstore = fakeblobstore.NewFakeBlobstore() targetDir = "fake-target-dir" compressor = fakecmd.NewFakeCompressor() logger = boshlog.NewLogger(boshlog.LevelNone) fs = fakesys.NewFakeFileSystem() blobID = "fake-blob-id" blobSHA1 = "fake-sha1" fileName = "tarball.tgz" blobstore.GetFileName = fileName fakeError = errors.New("Initial error") extractor = NewExtractor(fs, compressor, blobstore, logger) }) Describe("Cleanup", func() { BeforeEach(func() { err := extractor.Extract(blobID, blobSHA1, targetDir) Expect(err).ToNot(HaveOccurred()) }) It("deletes the extracted temp file", func() { Expect(fs.FileExists(targetDir)).To(BeTrue()) err := extractor.Cleanup(blobID, targetDir) Expect(err).ToNot(HaveOccurred())