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  }