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 }