github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/gosbom/pkg/cataloger/deb/package_test.go (about) 1 package deb 2 3 import ( 4 "testing" 5 6 "github.com/google/go-cmp/cmp" 7 "github.com/nextlinux/gosbom/gosbom/linux" 8 "github.com/nextlinux/gosbom/gosbom/pkg" 9 ) 10 11 func Test_packageURL(t *testing.T) { 12 tests := []struct { 13 name string 14 distro *linux.Release 15 metadata pkg.DpkgMetadata 16 expected string 17 }{ 18 { 19 name: "go case", 20 distro: &linux.Release{ 21 ID: "debian", 22 VersionID: "11", 23 IDLike: []string{ 24 "debian", 25 }, 26 }, 27 metadata: pkg.DpkgMetadata{ 28 Package: "p", 29 Version: "v", 30 }, 31 expected: "pkg:deb/debian/p@v?distro=debian-11", 32 }, 33 { 34 name: "missing ID_LIKE", 35 distro: &linux.Release{ 36 ID: "debian", 37 VersionID: "11", 38 }, 39 metadata: pkg.DpkgMetadata{ 40 Package: "p", 41 Version: "v", 42 }, 43 expected: "pkg:deb/debian/p@v?distro=debian-11", 44 }, 45 { 46 name: "with arch info", 47 distro: &linux.Release{ 48 ID: "ubuntu", 49 IDLike: []string{ 50 "debian", 51 }, 52 VersionID: "16.04", 53 }, 54 metadata: pkg.DpkgMetadata{ 55 Package: "p", 56 Version: "v", 57 Architecture: "a", 58 }, 59 expected: "pkg:deb/ubuntu/p@v?arch=a&distro=ubuntu-16.04", 60 }, 61 { 62 name: "missing distro", 63 metadata: pkg.DpkgMetadata{ 64 Package: "p", 65 Version: "v", 66 }, 67 expected: "", 68 }, 69 { 70 name: "with upstream qualifier with source pkg name info", 71 distro: &linux.Release{ 72 ID: "debian", 73 VersionID: "11", 74 IDLike: []string{ 75 "debian", 76 }, 77 }, 78 metadata: pkg.DpkgMetadata{ 79 Package: "p", 80 Source: "s", 81 Version: "v", 82 }, 83 expected: "pkg:deb/debian/p@v?upstream=s&distro=debian-11", 84 }, 85 { 86 name: "with upstream qualifier with source pkg name and version info", 87 distro: &linux.Release{ 88 ID: "debian", 89 VersionID: "11", 90 IDLike: []string{ 91 "debian", 92 }, 93 }, 94 metadata: pkg.DpkgMetadata{ 95 Package: "p", 96 Source: "s", 97 Version: "v", 98 SourceVersion: "2.3", 99 }, 100 expected: "pkg:deb/debian/p@v?upstream=s%402.3&distro=debian-11", 101 }, 102 } 103 104 for _, test := range tests { 105 t.Run(test.name, func(t *testing.T) { 106 actual := packageURL(test.metadata, test.distro) 107 if diff := cmp.Diff(test.expected, actual); diff != "" { 108 t.Errorf("unexpected packageURL (-want +got):\n%s", diff) 109 } 110 }) 111 } 112 }