github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/gosbom/pkg/cataloger/php/package_test.go (about)

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