github.com/paketo-buildpacks/packit@v1.3.2-0.20211206231111-86b75c657449/servicebindings/entry_test.go (about) 1 package servicebindings_test 2 3 import ( 4 "io" 5 "os" 6 "path/filepath" 7 "testing" 8 9 "github.com/paketo-buildpacks/packit/servicebindings" 10 "github.com/sclevine/spec" 11 12 . "github.com/onsi/gomega" 13 ) 14 15 func testEntry(t *testing.T, context spec.G, it spec.S) { 16 var ( 17 Expect = NewWithT(t).Expect 18 entry *servicebindings.Entry 19 tmpDir string 20 ) 21 22 it.Before(func() { 23 var err error 24 tmpDir, err = os.MkdirTemp("", "entry") 25 Expect(err).NotTo(HaveOccurred()) 26 entryPath := filepath.Join(tmpDir, "entry") 27 Expect(os.WriteFile(entryPath, []byte("some data"), os.ModePerm)).To(Succeed()) 28 entry = servicebindings.NewEntry(entryPath) 29 }) 30 31 it.After(func() { 32 Expect(os.RemoveAll(tmpDir)).To(Succeed()) 33 }) 34 35 context("ReadBytes", func() { 36 it("returns the raw bytes of the entry", func() { 37 Expect(entry.ReadBytes()).To(Equal([]byte("some data"))) 38 }) 39 }) 40 41 context("ReadString", func() { 42 it("returns the string value of the entry", func() { 43 Expect(entry.ReadString()).To(Equal("some data")) 44 }) 45 }) 46 47 context("usage as an io.ReadCloser", func() { 48 it("is assignable to io.ReadCloser", func() { 49 var _ io.ReadCloser = entry 50 }) 51 52 it("can be read again after closing", func() { 53 data, err := io.ReadAll(entry) 54 Expect(err).NotTo(HaveOccurred()) 55 Expect(entry.Close()).To(Succeed()) 56 Expect(data).To(Equal([]byte("some data"))) 57 58 data, err = io.ReadAll(entry) 59 Expect(err).NotTo(HaveOccurred()) 60 Expect(entry.Close()).To(Succeed()) 61 Expect(data).To(Equal([]byte("some data"))) 62 }) 63 64 it("can be closed multiple times in a row", func() { 65 _, err := io.ReadAll(entry) 66 Expect(err).NotTo(HaveOccurred()) 67 Expect(entry.Close()).To(Succeed()) 68 Expect(entry.Close()).To(Succeed()) 69 }) 70 71 it("can be closed if never read from", func() { 72 Expect(entry.Close()).To(Succeed()) 73 }) 74 }) 75 }