github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/javascript/parse_yarn_lock_test.go (about) 1 package javascript 2 3 import ( 4 "testing" 5 6 "github.com/anchore/syft/syft/artifact" 7 "github.com/anchore/syft/syft/file" 8 "github.com/anchore/syft/syft/pkg" 9 "github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest" 10 ) 11 12 func TestParseYarnBerry(t *testing.T) { 13 var expectedRelationships []artifact.Relationship 14 fixture := "test-fixtures/yarn-berry/yarn.lock" 15 locations := file.NewLocationSet(file.NewLocation(fixture)) 16 17 expectedPkgs := []pkg.Package{ 18 { 19 Name: "yarn-berry", 20 Version: "0.0.0", 21 Locations: locations, 22 PURL: "pkg:npm/yarn-berry@0.0.0", 23 Language: pkg.JavaScript, 24 MetadataType: pkg.NpmPackageLockJSONMetadataType, 25 Metadata: pkg.NpmPackageLockJSONMetadata{}, 26 Type: pkg.NpmPkg, 27 }, 28 { 29 Name: "@babel/code-frame", 30 Version: "7.10.4", 31 Locations: locations, 32 PURL: "pkg:npm/%40babel/code-frame@7.10.4", 33 Language: pkg.JavaScript, 34 MetadataType: pkg.NpmPackageLockJSONMetadataType, 35 Metadata: pkg.NpmPackageLockJSONMetadata{}, 36 Type: pkg.NpmPkg, 37 }, 38 { 39 Name: "@types/minimatch", 40 Version: "3.0.3", 41 Locations: locations, 42 PURL: "pkg:npm/%40types/minimatch@3.0.3", 43 Language: pkg.JavaScript, 44 MetadataType: pkg.NpmPackageLockJSONMetadataType, 45 Metadata: pkg.NpmPackageLockJSONMetadata{}, 46 Type: pkg.NpmPkg, 47 }, 48 { 49 Name: "@types/qs", 50 Version: "6.9.4", 51 Locations: locations, 52 PURL: "pkg:npm/%40types/qs@6.9.4", 53 Language: pkg.JavaScript, 54 MetadataType: pkg.NpmPackageLockJSONMetadataType, 55 Metadata: pkg.NpmPackageLockJSONMetadata{}, 56 Type: pkg.NpmPkg, 57 }, 58 { 59 Name: "ajv", 60 Version: "6.12.3", 61 Locations: locations, 62 PURL: "pkg:npm/ajv@6.12.3", 63 Language: pkg.JavaScript, 64 MetadataType: pkg.NpmPackageLockJSONMetadataType, 65 Metadata: pkg.NpmPackageLockJSONMetadata{}, 66 Type: pkg.NpmPkg, 67 }, 68 { 69 Name: "asn1.js", 70 Version: "4.10.1", 71 Locations: locations, 72 PURL: "pkg:npm/asn1.js@4.10.1", 73 Language: pkg.JavaScript, 74 MetadataType: pkg.NpmPackageLockJSONMetadataType, 75 Metadata: pkg.NpmPackageLockJSONMetadata{}, 76 Type: pkg.NpmPkg, 77 }, 78 { 79 Name: "atob", 80 Version: "2.1.2", 81 Locations: locations, 82 PURL: "pkg:npm/atob@2.1.2", 83 Language: pkg.JavaScript, 84 MetadataType: pkg.NpmPackageLockJSONMetadataType, 85 Metadata: pkg.NpmPackageLockJSONMetadata{}, 86 Type: pkg.NpmPkg, 87 }, 88 { 89 Name: "aws-sdk", 90 Version: "2.706.0", 91 PURL: "pkg:npm/aws-sdk@2.706.0", 92 Locations: locations, 93 Language: pkg.JavaScript, 94 MetadataType: pkg.NpmPackageLockJSONMetadataType, 95 Metadata: pkg.NpmPackageLockJSONMetadata{}, 96 Type: pkg.NpmPkg, 97 }, 98 { 99 Name: "c0n-fab_u.laTION", 100 Version: "7.7.7", 101 Locations: locations, 102 PURL: "pkg:npm/c0n-fab_u.laTION@7.7.7", 103 Language: pkg.JavaScript, 104 MetadataType: pkg.NpmPackageLockJSONMetadataType, 105 Metadata: pkg.NpmPackageLockJSONMetadata{}, 106 Type: pkg.NpmPkg, 107 }, 108 { 109 Name: "jhipster-core", 110 Version: "7.3.4", 111 Locations: locations, 112 PURL: "pkg:npm/jhipster-core@7.3.4", 113 Language: pkg.JavaScript, 114 MetadataType: pkg.NpmPackageLockJSONMetadataType, 115 Metadata: pkg.NpmPackageLockJSONMetadata{}, 116 Type: pkg.NpmPkg, 117 }, 118 } 119 120 pkgtest.TestFileParser(t, fixture, parseYarnLock, expectedPkgs, expectedRelationships) 121 } 122 123 func TestParseYarnLock(t *testing.T) { 124 var expectedRelationships []artifact.Relationship 125 fixture := "test-fixtures/yarn/yarn.lock" 126 locations := file.NewLocationSet(file.NewLocation(fixture)) 127 128 expectedPkgs := []pkg.Package{ 129 { 130 Name: "yarn", 131 Version: "0.0.0", 132 Locations: locations, 133 PURL: "pkg:npm/yarn@0.0.0", 134 Language: pkg.JavaScript, 135 MetadataType: pkg.NpmPackageLockJSONMetadataType, 136 Metadata: pkg.NpmPackageLockJSONMetadata{}, 137 Type: pkg.NpmPkg, 138 }, 139 { 140 Name: "@babel/code-frame", 141 Version: "7.10.4", 142 Locations: locations, 143 PURL: "pkg:npm/%40babel/code-frame@7.10.4", 144 Language: pkg.JavaScript, 145 MetadataType: pkg.NpmPackageLockJSONMetadataType, 146 Metadata: pkg.NpmPackageLockJSONMetadata{ 147 Resolved: "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a", 148 Integrity: "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 149 }, 150 Type: pkg.NpmPkg, 151 }, 152 { 153 Name: "@types/minimatch", 154 Version: "3.0.3", 155 Locations: locations, 156 PURL: "pkg:npm/%40types/minimatch@3.0.3", 157 Language: pkg.JavaScript, 158 MetadataType: pkg.NpmPackageLockJSONMetadataType, 159 Metadata: pkg.NpmPackageLockJSONMetadata{ 160 Resolved: "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d", 161 Integrity: "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", 162 }, 163 Type: pkg.NpmPkg, 164 }, 165 { 166 Name: "@types/qs", 167 Version: "6.9.4", 168 Locations: locations, 169 PURL: "pkg:npm/%40types/qs@6.9.4", 170 Language: pkg.JavaScript, 171 MetadataType: pkg.NpmPackageLockJSONMetadataType, 172 Metadata: pkg.NpmPackageLockJSONMetadata{ 173 Resolved: "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.4.tgz#a59e851c1ba16c0513ea123830dd639a0a15cb6a", 174 Integrity: "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==", 175 }, 176 Type: pkg.NpmPkg, 177 }, 178 { 179 Name: "ajv", 180 Version: "6.12.3", 181 Locations: locations, 182 PURL: "pkg:npm/ajv@6.12.3", 183 Language: pkg.JavaScript, 184 MetadataType: pkg.NpmPackageLockJSONMetadataType, 185 Metadata: pkg.NpmPackageLockJSONMetadata{ 186 Resolved: "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706", 187 Integrity: "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", 188 }, 189 Type: pkg.NpmPkg, 190 }, 191 { 192 Name: "asn1.js", 193 Version: "4.10.1", 194 Locations: locations, 195 PURL: "pkg:npm/asn1.js@4.10.1", 196 Language: pkg.JavaScript, 197 MetadataType: pkg.NpmPackageLockJSONMetadataType, 198 Metadata: pkg.NpmPackageLockJSONMetadata{ 199 Resolved: "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0", 200 Integrity: "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", 201 }, 202 Type: pkg.NpmPkg, 203 }, 204 { 205 Name: "atob", 206 Version: "2.1.2", 207 Locations: locations, 208 PURL: "pkg:npm/atob@2.1.2", 209 Language: pkg.JavaScript, 210 MetadataType: pkg.NpmPackageLockJSONMetadataType, 211 Metadata: pkg.NpmPackageLockJSONMetadata{ 212 Resolved: "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9", 213 Integrity: "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", 214 }, 215 Type: pkg.NpmPkg, 216 }, 217 { 218 Name: "aws-sdk", 219 Version: "2.706.0", 220 Locations: locations, 221 PURL: "pkg:npm/aws-sdk@2.706.0", 222 Language: pkg.JavaScript, 223 MetadataType: pkg.NpmPackageLockJSONMetadataType, 224 Metadata: pkg.NpmPackageLockJSONMetadata{ 225 Resolved: "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.706.0.tgz#09f65e9a91ecac5a635daf934082abae30eca953", 226 Integrity: "sha512-7GT+yrB5Wb/zOReRdv/Pzkb2Qt+hz6B/8FGMVaoysX3NryHvQUdz7EQWi5yhg9CxOjKxdw5lFwYSs69YlSp1KA==", 227 }, 228 Type: pkg.NpmPkg, 229 }, 230 { 231 Name: "jhipster-core", 232 Version: "7.3.4", 233 Locations: locations, 234 PURL: "pkg:npm/jhipster-core@7.3.4", 235 Language: pkg.JavaScript, 236 MetadataType: pkg.NpmPackageLockJSONMetadataType, 237 Metadata: pkg.NpmPackageLockJSONMetadata{ 238 Resolved: "https://registry.yarnpkg.com/jhipster-core/-/jhipster-core-7.3.4.tgz#c34b8c97c7f4e8b7518dae015517e2112c73cc80", 239 Integrity: "sha512-AUhT69kNkqppaJZVfan/xnKG4Gs9Ggj7YLtTZFVe+xg+THrbMb5Ng7PL07PDlDw4KAEA33GMCwuAf65E8EpC4g==", 240 }, 241 Type: pkg.NpmPkg, 242 }, 243 { 244 Name: "something-i-made-up", 245 Version: "7.7.7", 246 Locations: locations, 247 PURL: "pkg:npm/something-i-made-up@7.7.7", 248 Language: pkg.JavaScript, 249 MetadataType: pkg.NpmPackageLockJSONMetadataType, 250 Metadata: pkg.NpmPackageLockJSONMetadata{ 251 Resolved: "https://registry.yarnpkg.com/something-i-made-up/-/c0n-fab_u.laTION-7.7.7.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0", 252 Integrity: "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", 253 }, 254 Type: pkg.NpmPkg, 255 }, 256 } 257 258 pkgtest.TestFileParser(t, fixture, parseYarnLock, expectedPkgs, expectedRelationships) 259 }