github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/syft/format/common/spdxhelpers/download_location_test.go (about) 1 package spdxhelpers 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/anchore/syft/syft/pkg" 9 ) 10 11 func Test_DownloadLocation(t *testing.T) { 12 tests := []struct { 13 name string 14 input pkg.Package 15 expected string 16 }{ 17 { 18 name: "no metadata", 19 input: pkg.Package{}, 20 expected: NOASSERTION, 21 }, 22 { 23 name: "from apk", 24 input: pkg.Package{ 25 Metadata: pkg.ApkDBEntry{ 26 URL: "http://a-place.gov", 27 }, 28 }, 29 expected: "http://a-place.gov", 30 }, 31 { 32 name: "from npm", 33 input: pkg.Package{ 34 Metadata: pkg.NpmPackage{ 35 URL: "http://a-place.gov", 36 }, 37 }, 38 expected: "http://a-place.gov", 39 }, 40 { 41 name: "empty", 42 input: pkg.Package{ 43 Metadata: pkg.NpmPackage{ 44 URL: "", 45 }, 46 }, 47 expected: NONE, 48 }, 49 { 50 name: "from npm package-lock should include resolved", 51 input: pkg.Package{ 52 Metadata: pkg.NpmPackageLockEntry{ 53 Resolved: "http://package-lock.test", 54 }, 55 }, 56 expected: "http://package-lock.test", 57 }, 58 { 59 name: "from npm package-lock empty should be NONE", 60 input: pkg.Package{ 61 Metadata: pkg.NpmPackageLockEntry{ 62 Resolved: "", 63 }, 64 }, 65 expected: NONE, 66 }, 67 } 68 for _, test := range tests { 69 t.Run(test.name, func(t *testing.T) { 70 assert.Equal(t, test.expected, DownloadLocation(test.input)) 71 }) 72 } 73 }