github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/attestation/sbom/rekor_test.go (about) 1 package sbom_test 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 10 "github.com/devseccon/trivy/pkg/attestation/sbom" 11 "github.com/devseccon/trivy/pkg/log" 12 "github.com/devseccon/trivy/pkg/rekortest" 13 ) 14 15 func TestRekor_RetrieveSBOM(t *testing.T) { 16 tests := []struct { 17 name string 18 digest string 19 want string 20 wantErr string 21 }{ 22 { 23 name: "happy path", 24 digest: "sha256:5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03", 25 want: `{"bomFormat":"CycloneDX","specVersion":"1.5","version":2}`, 26 }, 27 { 28 name: "404", 29 digest: "sha256:unknown", 30 wantErr: "failed to search", 31 }, 32 } 33 34 require.NoError(t, log.InitLogger(false, true)) 35 for _, tt := range tests { 36 t.Run(tt.name, func(t *testing.T) { 37 ts := rekortest.NewServer(t) 38 defer ts.Close() 39 40 // Set the testing URL 41 rc, err := sbom.NewRekor(ts.URL()) 42 require.NoError(t, err) 43 44 got, err := rc.RetrieveSBOM(context.Background(), tt.digest) 45 if tt.wantErr != "" { 46 assert.ErrorContains(t, err, tt.wantErr) 47 return 48 } 49 require.NoError(t, err, tt.name) 50 assert.Equal(t, tt.want, string(got)) 51 }) 52 } 53 }