github.com/YousefHaggyHeroku/pack@v1.5.5/internal/registry/buildpack_test.go (about) 1 package registry_test 2 3 import ( 4 "testing" 5 6 "github.com/sclevine/spec" 7 "github.com/sclevine/spec/report" 8 9 "github.com/YousefHaggyHeroku/pack/internal/registry" 10 h "github.com/YousefHaggyHeroku/pack/testhelpers" 11 ) 12 13 func TestRegistryBuildpack(t *testing.T) { 14 spec.Run(t, "Buildpack", testRegistryBuildpack, spec.Parallel(), spec.Report(report.Terminal{})) 15 } 16 17 func testRegistryBuildpack(t *testing.T, when spec.G, it spec.S) { 18 when("#Validate", func() { 19 it("errors when address is missing", func() { 20 b := registry.Buildpack{ 21 Address: "", 22 } 23 24 h.AssertNotNil(t, registry.Validate(b)) 25 }) 26 27 it("errors when not a digest", func() { 28 b := registry.Buildpack{ 29 Address: "example.com/some/package:18", 30 } 31 32 h.AssertNotNil(t, registry.Validate(b)) 33 }) 34 35 it("succeeds when address is a digest", func() { 36 b := registry.Buildpack{ 37 Address: "example.com/some/package@sha256:8c27fe111c11b722081701dfed3bd55e039b9ce92865473cf4cdfa918071c566", 38 } 39 40 h.AssertNil(t, registry.Validate(b)) 41 }) 42 }) 43 44 when("#ParseNamespaceName", func() { 45 it("should parse buildpack id into namespace and name", func() { 46 const id = "heroku/rust@1.2.3" 47 namespace, name, err := registry.ParseNamespaceName(id) 48 49 h.AssertNil(t, err) 50 h.AssertEq(t, namespace, "heroku") 51 h.AssertEq(t, name, "rust@1.2.3") 52 }) 53 54 it("should provide an error for invalid id", func() { 55 const id = "bad id" 56 _, _, err := registry.ParseNamespaceName(id) 57 58 h.AssertNotNil(t, err) 59 }) 60 }) 61 }