Expect(err.Error()).To(ContainSubstring("fake-last-get-err")) Expect(innerBlobstore.GetBlobIDs).To(Equal( []string{"fake-blob-id", "fake-blob-id", "fake-blob-id"}, )) Expect(innerBlobstore.GetFingerprints).To(Equal( []string{"fake-fingerprint", "fake-fingerprint", "fake-fingerprint"}, )) }) }) }) Describe("CleanUp", func() { It("delegates to inner blobstore to clean up", func() { err := retryableBlobstore.CleanUp("/some/file") Expect(err).ToNot(HaveOccurred()) Expect(innerBlobstore.CleanUpFileName).To(Equal("/some/file")) }) It("returns error if inner blobstore cleaning up fails", func() { innerBlobstore.CleanUpErr = errors.New("fake-clean-up-error") err := retryableBlobstore.CleanUp("/some/file") Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-clean-up-error")) }) }) Describe("Delete", func() {
Expect(blobManager.GetPathCallCount()).To(Equal(1)) Expect(blobManager.GetPathArgsForCall(0)).To(Equal(blobID)) Expect(err).ToNot(BeNil()) Expect(err.Error()).To(Equal("inner blobstore GET is broken")) }) }) }) }) Describe("CleanUp", func() { It("delegates the action to the inner blobstore", func() { innerBlobstore.CleanUpErr = nil err := cascadingBlobstore.CleanUp("fileToDelete") Expect(err).To(BeNil()) Expect(innerBlobstore.CleanUpFileName).To(Equal("fileToDelete")) }) It("returns an error if the inner blobstore fails to clean up", func() { innerBlobstore.CleanUpErr = errors.New("error cleaning up") err := cascadingBlobstore.CleanUp("randomFile") Expect(err).ToNot(BeNil()) Expect(err.Error()).To(Equal("error cleaning up")) }) }) Describe("Create", func() { It("delegates the action to the inner blobstore", func() {
Expect(err.Error()).To(ContainSubstring("fake-get-error")) }) It("skips sha1 verification and returns without an error if sha1 is empty", func() { innerBlobstore.GetFileName = fixturePath fileName, err := sha1VerifiableBlobstore.Get("fake-blob-id", "") Expect(err).ToNot(HaveOccurred()) Expect(fileName).To(Equal(fixturePath)) }) }) Describe("CleanUp", func() { It("delegates to inner blobstore to clean up", func() { err := sha1VerifiableBlobstore.CleanUp("/some/file") Expect(err).ToNot(HaveOccurred()) Expect(innerBlobstore.CleanUpFileName).To(Equal("/some/file")) }) It("returns error if inner blobstore cleaning up fails", func() { innerBlobstore.CleanUpErr = errors.New("fake-clean-up-error") err := sha1VerifiableBlobstore.CleanUp("/some/file") Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-clean-up-error")) }) }) Describe("Delete", func() {
It("returns without an error if sha256 matches", func() { innerBlobstore.GetFileName = fixturePath fileName, err := checksumVerifiableBlobstore.Get("fake-blob-id", fixtureDigest) Expect(err).ToNot(HaveOccurred()) Expect(innerBlobstore.GetBlobIDs).To(Equal([]string{"fake-blob-id"})) Expect(fileName).To(Equal(fixturePath)) }) }) }) Describe("CleanUp", func() { It("delegates to inner blobstore to clean up", func() { err := checksumVerifiableBlobstore.CleanUp("/some/file") Expect(err).ToNot(HaveOccurred()) Expect(innerBlobstore.CleanUpFileName).To(Equal("/some/file")) }) It("returns error if inner blobstore cleaning up fails", func() { innerBlobstore.CleanUpErr = errors.New("fake-clean-up-error") err := checksumVerifiableBlobstore.CleanUp("/some/file") Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-clean-up-error")) }) }) Describe("Delete", func() {