github.com/anchore/syft@v1.38.2/syft/pkg/cataloger/bitnami/package_test.go (about) 1 package bitnami 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/anchore/syft/syft/pkg" 8 ) 9 10 func Test_parseBitnamiPURL(t *testing.T) { 11 tests := []struct { 12 name string 13 purl string 14 want *pkg.BitnamiSBOMEntry 15 wantErr bool 16 }{ 17 { 18 name: "Valid Bitnami pURL", 19 purl: "pkg:bitnami/redis@7.4.1-0?arch=arm64&distro=debian-12", 20 want: &pkg.BitnamiSBOMEntry{ 21 Name: "redis", 22 Version: "7.4.1", 23 Revision: "0", 24 Architecture: "arm64", 25 Distro: "debian-12", 26 }, 27 wantErr: false, 28 }, 29 { 30 name: "Invalid pURL", 31 purl: "this/is/not/a/purl", 32 want: nil, 33 wantErr: true, 34 }, 35 { 36 name: "Invalid version", 37 purl: "pkg:bitnami/redis@7.4.1.0?arch=arm64&distro=debian-12", 38 want: nil, 39 wantErr: true, 40 }, 41 } 42 t.Parallel() 43 for _, testToRun := range tests { 44 test := testToRun 45 t.Run(test.name, func(tt *testing.T) { 46 tt.Parallel() 47 got, err := parseBitnamiPURL(test.purl) 48 if (err != nil) != test.wantErr { 49 tt.Errorf("parseBitnamiPURL() error = %v, wantErr %v", err, test.wantErr) 50 return 51 } 52 if !reflect.DeepEqual(got, test.want) { 53 tt.Errorf("parseBitnamiPURL() = %v, want %v", got, test.want) 54 } 55 }) 56 } 57 }