github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/cnbutils/buildpack_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package cnbutils_test 5 6 import ( 7 "fmt" 8 "testing" 9 10 "github.com/SAP/jenkins-library/pkg/cnbutils" 11 "github.com/SAP/jenkins-library/pkg/mock" 12 v1 "github.com/google/go-containerregistry/pkg/v1" 13 "github.com/google/go-containerregistry/pkg/v1/fake" 14 fakeImage "github.com/google/go-containerregistry/pkg/v1/fake" 15 "github.com/stretchr/testify/assert" 16 ) 17 18 func TestBuildpackDownload(t *testing.T) { 19 var mockUtils = &cnbutils.MockUtils{ 20 ExecMockRunner: &mock.ExecMockRunner{}, 21 FilesMock: &mock.FilesMock{}, 22 DownloadMock: &mock.DownloadMock{}, 23 } 24 25 t.Run("successfully downloads a buildpack", func(t *testing.T) { 26 fakeImg := &fakeImage.FakeImage{} 27 fakeImg.DigestReturns(v1.NewHash("sha256:2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824")) 28 fakeImg.ConfigFileReturns(&v1.ConfigFile{ 29 Config: v1.Config{ 30 Labels: map[string]string{ 31 "io.buildpacks.buildpackage.metadata": "{\"id\": \"testbuildpack\", \"version\": \"0.0.1\"}", 32 }, 33 }, 34 }, nil) 35 mockUtils.ReturnImage = fakeImg 36 mockUtils.RemoteImageInfo = fakeImg 37 38 err := cnbutils.DownloadBuildpacks("/destination", []string{"buildpack"}, "/tmp/config.json", mockUtils) 39 assert.NoError(t, err) 40 }) 41 } 42 43 func TestGetMetadata(t *testing.T) { 44 var mockUtils = &cnbutils.MockUtils{ 45 ExecMockRunner: &mock.ExecMockRunner{}, 46 FilesMock: &mock.FilesMock{}, 47 DownloadMock: &mock.DownloadMock{ 48 ImageInfoStub: func(imageRef string) (v1.Image, error) { 49 return &fake.FakeImage{ 50 ConfigFileStub: func() (*v1.ConfigFile, error) { 51 return &v1.ConfigFile{ 52 Config: v1.Config{ 53 Labels: map[string]string{ 54 "io.buildpacks.buildpackage.metadata": fmt.Sprintf("{\"id\": \"%s\", \"version\": \"0.0.1\"}", imageRef), 55 }, 56 }, 57 }, nil 58 }, 59 }, nil 60 }, 61 }, 62 } 63 64 t.Run("returns empty metadata", func(t *testing.T) { 65 meta, err := cnbutils.GetMetadata(nil, mockUtils) 66 assert.NoError(t, err) 67 assert.Empty(t, meta) 68 }) 69 70 t.Run("returns metadata of the provided buildpacks", func(t *testing.T) { 71 meta, err := cnbutils.GetMetadata([]string{"buildpack1", "buildpack2"}, mockUtils) 72 assert.NoError(t, err) 73 assert.Equal(t, []cnbutils.BuildPackMetadata{ 74 { 75 ID: "buildpack1", 76 Version: "0.0.1", 77 }, 78 { 79 ID: "buildpack2", 80 Version: "0.0.1", 81 }, 82 }, meta) 83 }) 84 }