}) Describe("Create", func() { It("delegates to inner blobstore to create blob and returns sha1 of returned blob", func() { innerBlobstore.CreateBlobID = "fake-blob-id" blobID, sha1, err := sha1VerifiableBlobstore.Create(fixturePath) Expect(err).ToNot(HaveOccurred()) Expect(blobID).To(Equal("fake-blob-id")) Expect(sha1).To(Equal(fixtureSHA1)) Expect(innerBlobstore.CreateFileNames[0]).To(Equal(fixturePath)) }) It("returns error if inner blobstore blob creation fails", func() { innerBlobstore.CreateErr = errors.New("fake-create-error") _, _, err := sha1VerifiableBlobstore.Create(fixturePath) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-create-error")) }) }) Describe("Validate", func() { It("delegates to inner blobstore to validate", func() { err := sha1VerifiableBlobstore.Validate() Expect(err).ToNot(HaveOccurred()) }) It("returns error if inner blobstore validation fails", func() { innerBlobstore.ValidateError = bosherr.Error("fake-validate-error")
Context("when compression fails", func() { JustBeforeEach(func() { compressor.CompressFilesInDirErr = errors.New("fake-compression-error") }) It("returns error", func() { _, err := compiler.Compile(pkg) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("Compressing compiled package")) }) }) Context("when adding to blobstore fails", func() { JustBeforeEach(func() { blobstore.CreateErr = errors.New("fake-error") }) It("returns error", func() { _, err := compiler.Compile(pkg) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("Creating blob")) Expect(err.Error()).To(ContainSubstring("fake-error")) }) }) Context("when saving to the compiled package repo fails", func() { JustBeforeEach(func() { expectSave.Return(errors.New("fake-error")).Times(1) })