github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/php/package_test.go (about)

     1  package php
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/sergi/go-diff/diffmatchpatch"
     7  
     8  	"github.com/anchore/syft/syft/pkg"
     9  )
    10  
    11  func Test_packageURL(t *testing.T) {
    12  	tests := []struct {
    13  		name     string
    14  		metadata parsedData
    15  		expected string
    16  	}{
    17  		{
    18  			name: "with extractable vendor",
    19  			metadata: parsedData{
    20  				[]string{},
    21  				pkg.PhpComposerJSONMetadata{
    22  					Version: "1.0.1",
    23  					Name:    "ven/name",
    24  				},
    25  			},
    26  			expected: "pkg:composer/ven/name@1.0.1",
    27  		},
    28  		{
    29  			name: "name with slashes (invalid)",
    30  			metadata: parsedData{
    31  				[]string{},
    32  				pkg.PhpComposerJSONMetadata{
    33  					Name:    "ven/name/component",
    34  					Version: "1.0.1",
    35  				},
    36  			},
    37  			expected: "pkg:composer/ven/name-component@1.0.1",
    38  		},
    39  		{
    40  			name: "unknown vendor",
    41  			metadata: parsedData{
    42  				[]string{},
    43  				pkg.PhpComposerJSONMetadata{
    44  					Name:    "name",
    45  					Version: "1.0.1",
    46  				},
    47  			},
    48  			expected: "pkg:composer/name@1.0.1",
    49  		},
    50  	}
    51  
    52  	for _, test := range tests {
    53  		t.Run(test.name, func(t *testing.T) {
    54  			actual := packageURL(test.metadata)
    55  			if actual != test.expected {
    56  				dmp := diffmatchpatch.New()
    57  				diffs := dmp.DiffMain(test.expected, actual, true)
    58  				t.Errorf("diff: %s", dmp.DiffPrettyText(diffs))
    59  			}
    60  		})
    61  	}
    62  }