1package templatescompiler_test 2 3import ( 4 . "github.com/cloudfoundry/bosh-cli/templatescompiler" 5 6 "bytes" 7 "os" 8 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 12 mock_template "github.com/cloudfoundry/bosh-cli/templatescompiler/mocks" 13 "github.com/golang/mock/gomock" 14 15 bosherr "github.com/cloudfoundry/bosh-utils/errors" 16 boshlog "github.com/cloudfoundry/bosh-utils/logger" 17 fakeboshsys "github.com/cloudfoundry/bosh-utils/system/fakes" 18) 19 20var _ = Describe("RenderedJobListArchive", func() { 21 var mockCtrl *gomock.Controller 22 23 BeforeEach(func() { 24 mockCtrl = gomock.NewController(GinkgoT()) 25 }) 26 27 AfterEach(func() { 28 mockCtrl.Finish() 29 }) 30 31 var ( 32 outBuffer *bytes.Buffer 33 logger boshlog.Logger 34 fs *fakeboshsys.FakeFileSystem 35 36 mockRenderedJobList *mock_template.MockRenderedJobList 37 38 renderedJobListArchivePath string 39 renderedJobListArchiveDigest string 40 41 renderedJobListArchive RenderedJobListArchive 42 ) 43 44 BeforeEach(func() { 45 outBuffer = bytes.NewBufferString("") 46 logger = boshlog.NewWriterLogger(boshlog.LevelDebug, outBuffer) 47 48 fs = fakeboshsys.NewFakeFileSystem() 49 50 mockRenderedJobList = mock_template.NewMockRenderedJobList(mockCtrl) 51 52 renderedJobListArchivePath = "fake-archive-path" 53 renderedJobListArchiveDigest = "fake-sha1" 54 55 renderedJobListArchive = NewRenderedJobListArchive( 56 mockRenderedJobList, 57 renderedJobListArchivePath, 58 renderedJobListArchiveDigest, 59 fs, logger) 60 }) 61 62 Describe("List", func() { 63 It("returns the rendered job list", func() { 64 Expect(renderedJobListArchive.List()).To(Equal(mockRenderedJobList)) 65 }) 66 }) 67 68 Describe("Path", func() { 69 It("returns the rendered job list archive path", func() { 70 Expect(renderedJobListArchive.Path()).To(Equal(renderedJobListArchivePath)) 71 }) 72 }) 73 74 Describe("SHA1", func() { 75 It("returns the rendered job list archive sha1", func() { 76 Expect(renderedJobListArchive.SHA1()).To(Equal(renderedJobListArchiveDigest)) 77 }) 78 }) 79 80 Describe("Delete", func() { 81 It("deletes the rendered job list archive from the file system", func() { 82 err := fs.MkdirAll(renderedJobListArchivePath, os.ModePerm) 83 Expect(err).ToNot(HaveOccurred()) 84 85 err = renderedJobListArchive.Delete() 86 Expect(err).ToNot(HaveOccurred()) 87 Expect(fs.FileExists(renderedJobListArchivePath)).To(BeFalse()) 88 }) 89 90 Context("when deleting from the file system fails", func() { 91 JustBeforeEach(func() { 92 fs.RemoveAllStub = func(_ string) error { 93 return bosherr.Error("fake-delete-error") 94 } 95 }) 96 97 It("returns an error", func() { 98 err := renderedJobListArchive.Delete() 99 Expect(err).To(HaveOccurred()) 100 Expect(err.Error()).To(ContainSubstring("fake-delete-error")) 101 }) 102 }) 103 }) 104 105 Describe("DeleteSilently", func() { 106 It("deletes the rendered job path from the file system", func() { 107 err := fs.MkdirAll(renderedJobListArchivePath, os.ModePerm) 108 Expect(err).ToNot(HaveOccurred()) 109 110 renderedJobListArchive.DeleteSilently() 111 Expect(fs.FileExists(renderedJobListArchivePath)).To(BeFalse()) 112 }) 113 114 Context("when deleting from the file system fails", func() { 115 JustBeforeEach(func() { 116 fs.RemoveAllStub = func(_ string) error { 117 return bosherr.Error("fake-delete-error") 118 } 119 }) 120 121 It("logs the error", func() { 122 renderedJobListArchive.DeleteSilently() 123 124 log := outBuffer.String() 125 Expect(log).To(ContainSubstring("Failed to delete rendered job list archive")) 126 Expect(log).To(ContainSubstring("fake-delete-error")) 127 }) 128 }) 129 }) 130}) 131