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")) }) It("returns error if inner blobstore getting fails", func() { innerBlobstore.GetError = errors.New("fake-get-error") _, err := sha1VerifiableBlobstore.Get("fake-blob-id", fixtureSHA1) Expect(err).To(HaveOccurred()) 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)) }) })
Context("and decompressing the blob fails", func() { It("returns an error and doesn't remove the target dir", func() { compressor.DecompressFileToDirErr = fakeError Expect(fs.FileExists(targetDir)).To(BeTrue()) err := extractor.Extract(blobID, blobSHA1, targetDir) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(Equal("Decompressing compiled package: BlobID: 'fake-blob-id', BlobSHA1: 'fake-sha1': Initial error")) Expect(fs.FileExists(targetDir)).To(BeTrue()) }) }) }) Context("when getting the blob from the blobstore errors", func() { BeforeEach(func() { blobstore.GetError = fakeError }) It("returns an error", func() { err := extractor.Extract(blobID, blobSHA1, targetDir) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(Equal("Getting object from blobstore: fake-blob-id: Initial error")) }) }) Context("when creating the target dir fails", func() { It("return an error", func() { fs.MkdirAllError = fakeError err := extractor.Extract(blobID, blobSHA1, targetDir) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(Equal("Creating target dir: fake-target-dir: Initial error"))