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() {