github.com/paketo-buildpacks/packit@v1.3.2-0.20211206231111-86b75c657449/postal/internal/dependency_mappings_test.go (about) 1 package internal_test 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "github.com/paketo-buildpacks/packit/postal/internal" 9 "github.com/paketo-buildpacks/packit/postal/internal/fakes" 10 "github.com/paketo-buildpacks/packit/servicebindings" 11 "github.com/sclevine/spec" 12 13 . "github.com/onsi/gomega" 14 ) 15 16 func testDependencyMappings(t *testing.T, context spec.G, it spec.S) { 17 var ( 18 Expect = NewWithT(t).Expect 19 tmpDir string 20 resolver internal.DependencyMappingResolver 21 bindingResolver *fakes.BindingResolver 22 err error 23 ) 24 25 it.Before(func() { 26 tmpDir, err = os.MkdirTemp("", "dependency-mappings") 27 Expect(err).NotTo(HaveOccurred()) 28 Expect(os.WriteFile(filepath.Join(tmpDir, "entry-data"), []byte("dependency-mapping-entry.tgz"), os.ModePerm)) 29 30 bindingResolver = &fakes.BindingResolver{} 31 resolver = internal.NewDependencyMappingResolver(bindingResolver) 32 Expect(err).NotTo(HaveOccurred()) 33 }) 34 35 it.After(func() { 36 Expect(os.RemoveAll(tmpDir)).To(Succeed()) 37 }) 38 39 context("FindDependencyMapping", func() { 40 it.Before(func() { 41 bindingResolver.ResolveCall.Returns.BindingSlice = []servicebindings.Binding{ 42 { 43 Name: "some-binding", 44 Path: "some-path", 45 Type: "dependency-mapping", 46 Entries: map[string]*servicebindings.Entry{ 47 "some-sha": servicebindings.NewEntry(filepath.Join(tmpDir, "entry-data")), 48 }, 49 }, 50 { 51 Name: "other-binding", 52 Path: "other-path", 53 Type: "dependency-mapping", 54 Entries: map[string]*servicebindings.Entry{ 55 "other-sha": servicebindings.NewEntry("some-entry-path"), 56 }, 57 }, 58 { 59 Name: "another-binding", 60 Path: "another-path", 61 Type: "another-type", 62 Entries: map[string]*servicebindings.Entry{}, 63 }, 64 } 65 }) 66 67 context("given a set of bindings and a dependency", func() { 68 it("finds a matching dependency mappings in the platform bindings if there is one", func() { 69 boundDependency, err := resolver.FindDependencyMapping("some-sha", "some-platform-dir") 70 Expect(err).ToNot(HaveOccurred()) 71 Expect(bindingResolver.ResolveCall.Receives.Typ).To(Equal("dependency-mapping")) 72 Expect(bindingResolver.ResolveCall.Receives.Provider).To(BeEmpty()) 73 Expect(bindingResolver.ResolveCall.Receives.PlatformDir).To(Equal("some-platform-dir")) 74 Expect(boundDependency).To(Equal("dependency-mapping-entry.tgz")) 75 }) 76 }) 77 78 context("given a set of bindings and a dependency", func() { 79 it("returns an empty DependencyMapping if there is no match", func() { 80 boundDependency, err := resolver.FindDependencyMapping("unmatched-sha", "") 81 Expect(err).ToNot(HaveOccurred()) 82 Expect(boundDependency).To(Equal("")) 83 }) 84 }) 85 }) 86 }