github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/syft/pkg/cataloger/javascript/cataloger_test.go (about) 1 package javascript 2 3 import ( 4 "testing" 5 6 "github.com/anchore/syft/syft/file" 7 "github.com/anchore/syft/syft/pkg" 8 "github.com/lineaje-labs/syft/syft/pkg/cataloger/internal/pkgtest" 9 ) 10 11 func Test_JavascriptCataloger(t *testing.T) { 12 locationSet := file.NewLocationSet(file.NewLocation("package-lock.json")) 13 expectedPkgs := []pkg.Package{ 14 { 15 Name: "@actions/core", 16 Version: "1.6.0", 17 FoundBy: "javascript-lock-cataloger", 18 PURL: "pkg:npm/%40actions/core@1.6.0", 19 Locations: locationSet, 20 Language: pkg.JavaScript, 21 Type: pkg.NpmPkg, 22 Licenses: pkg.NewLicenseSet( 23 pkg.NewLicenseFromLocations("MIT", file.NewLocation("package-lock.json")), 24 ), 25 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/@actions/core/-/core-1.6.0.tgz", Integrity: "sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw=="}, 26 }, 27 { 28 Name: "ansi-regex", 29 Version: "3.0.0", 30 FoundBy: "javascript-lock-cataloger", 31 PURL: "pkg:npm/ansi-regex@3.0.0", 32 Locations: locationSet, 33 Language: pkg.JavaScript, 34 Type: pkg.NpmPkg, 35 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", Integrity: "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="}, 36 }, 37 { 38 Name: "cowsay", 39 Version: "1.4.0", 40 FoundBy: "javascript-lock-cataloger", 41 PURL: "pkg:npm/cowsay@1.4.0", 42 Locations: locationSet, 43 Language: pkg.JavaScript, 44 Type: pkg.NpmPkg, 45 Licenses: pkg.NewLicenseSet( 46 pkg.NewLicenseFromLocations("MIT", file.NewLocation("package-lock.json")), 47 ), 48 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/cowsay/-/cowsay-1.4.0.tgz", Integrity: "sha512-rdg5k5PsHFVJheO/pmE3aDg2rUDDTfPJau6yYkZYlHFktUz+UxbE+IgnUAEyyCyv4noL5ltxXD0gZzmHPCy/9g=="}, 49 }, 50 { 51 Name: "get-stdin", 52 Version: "5.0.1", 53 FoundBy: "javascript-lock-cataloger", 54 PURL: "pkg:npm/get-stdin@5.0.1", 55 Locations: locationSet, 56 Language: pkg.JavaScript, 57 Type: pkg.NpmPkg, 58 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", Integrity: "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g="}, 59 }, 60 { 61 Name: "is-fullwidth-code-point", 62 Version: "2.0.0", 63 FoundBy: "javascript-lock-cataloger", 64 PURL: "pkg:npm/is-fullwidth-code-point@2.0.0", 65 Locations: locationSet, 66 Language: pkg.JavaScript, 67 Type: pkg.NpmPkg, 68 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", Integrity: "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="}, 69 }, 70 { 71 Name: "minimist", 72 Version: "0.0.10", 73 FoundBy: "javascript-lock-cataloger", 74 PURL: "pkg:npm/minimist@0.0.10", 75 Locations: locationSet, 76 Language: pkg.JavaScript, 77 Type: pkg.NpmPkg, 78 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", Integrity: "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="}, 79 }, 80 { 81 Name: "optimist", 82 Version: "0.6.1", 83 FoundBy: "javascript-lock-cataloger", 84 PURL: "pkg:npm/optimist@0.6.1", 85 Locations: locationSet, 86 Language: pkg.JavaScript, 87 Type: pkg.NpmPkg, 88 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", Integrity: "sha1-2j6nRob6IaGaERwybpDrFaAZZoY="}, 89 }, 90 { 91 Name: "string-width", 92 Version: "2.1.1", 93 FoundBy: "javascript-lock-cataloger", 94 PURL: "pkg:npm/string-width@2.1.1", 95 Locations: locationSet, 96 Language: pkg.JavaScript, 97 Type: pkg.NpmPkg, 98 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", Integrity: "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw=="}, 99 }, 100 { 101 Name: "strip-ansi", 102 Version: "4.0.0", 103 FoundBy: "javascript-lock-cataloger", 104 PURL: "pkg:npm/strip-ansi@4.0.0", 105 Locations: locationSet, 106 Language: pkg.JavaScript, 107 Type: pkg.NpmPkg, 108 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", Integrity: "sha1-qEeQIusaw2iocTibY1JixQXuNo8="}, 109 }, 110 { 111 Name: "strip-eof", 112 Version: "1.0.0", 113 FoundBy: "javascript-lock-cataloger", 114 PURL: "pkg:npm/strip-eof@1.0.0", 115 Locations: locationSet, 116 Language: pkg.JavaScript, 117 Type: pkg.NpmPkg, 118 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", Integrity: "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="}, 119 }, 120 { 121 Name: "wordwrap", 122 Version: "0.0.3", 123 FoundBy: "javascript-lock-cataloger", 124 PURL: "pkg:npm/wordwrap@0.0.3", 125 Locations: locationSet, 126 Language: pkg.JavaScript, 127 Type: pkg.NpmPkg, 128 Metadata: pkg.NpmPackageLockEntry{Resolved: "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", Integrity: "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="}, 129 }, 130 } 131 132 pkgtest.NewCatalogTester(). 133 FromDirectory(t, "test-fixtures/pkg-lock"). 134 Expects(expectedPkgs, nil). 135 TestCataloger(t, NewLockCataloger()) 136 137 } 138 139 func Test_PackageCataloger_Globs(t *testing.T) { 140 tests := []struct { 141 name string 142 fixture string 143 expected []string 144 }{ 145 { 146 name: "obtain package files", 147 fixture: "test-fixtures/glob-paths", 148 expected: []string{ 149 "src/package.json", 150 }, 151 }, 152 } 153 154 for _, test := range tests { 155 t.Run(test.name, func(t *testing.T) { 156 pkgtest.NewCatalogTester(). 157 FromDirectory(t, test.fixture). 158 ExpectsResolverContentQueries(test.expected). 159 TestCataloger(t, NewPackageCataloger()) 160 }) 161 } 162 } 163 164 func Test_LockCataloger_Globs(t *testing.T) { 165 tests := []struct { 166 name string 167 fixture string 168 expected []string 169 }{ 170 { 171 name: "obtain package files", 172 fixture: "test-fixtures/glob-paths", 173 expected: []string{ 174 "src/package-lock.json", 175 "src/pnpm-lock.yaml", 176 "src/yarn.lock", 177 }, 178 }, 179 } 180 181 for _, test := range tests { 182 t.Run(test.name, func(t *testing.T) { 183 pkgtest.NewCatalogTester(). 184 FromDirectory(t, test.fixture). 185 ExpectsResolverContentQueries(test.expected). 186 TestCataloger(t, NewLockCataloger()) 187 }) 188 } 189 }