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  }