github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/javascript/parse_pnpm_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 TestParsePnpmLock(t *testing.T) { 13 var expectedRelationships []artifact.Relationship 14 fixture := "test-fixtures/pnpm/pnpm-lock.yaml" 15 16 locationSet := file.NewLocationSet(file.NewLocation(fixture)) 17 18 expectedPkgs := []pkg.Package{ 19 { 20 Name: "pnpm", 21 Version: "0.0.0", 22 PURL: "pkg:npm/pnpm@0.0.0", 23 Locations: locationSet, 24 Language: pkg.JavaScript, 25 MetadataType: pkg.NpmPackageLockJSONMetadataType, 26 Metadata: pkg.NpmPackageLockJSONMetadata{}, 27 Type: pkg.NpmPkg, 28 }, 29 { 30 Name: "nanoid", 31 Version: "3.3.4", 32 PURL: "pkg:npm/nanoid@3.3.4", 33 Locations: locationSet, 34 Language: pkg.JavaScript, 35 MetadataType: pkg.NpmPackageLockJSONMetadataType, 36 Metadata: pkg.NpmPackageLockJSONMetadata{}, 37 Type: pkg.NpmPkg, 38 }, 39 { 40 Name: "picocolors", 41 Version: "1.0.0", 42 PURL: "pkg:npm/picocolors@1.0.0", 43 Locations: locationSet, 44 Language: pkg.JavaScript, 45 MetadataType: pkg.NpmPackageLockJSONMetadataType, 46 Metadata: pkg.NpmPackageLockJSONMetadata{}, 47 Type: pkg.NpmPkg, 48 }, 49 { 50 Name: "source-map-js", 51 Version: "1.0.2", 52 PURL: "pkg:npm/source-map-js@1.0.2", 53 Locations: locationSet, 54 Language: pkg.JavaScript, 55 MetadataType: pkg.NpmPackageLockJSONMetadataType, 56 Metadata: pkg.NpmPackageLockJSONMetadata{}, 57 Type: pkg.NpmPkg, 58 }, 59 { 60 Name: "@bcoe/v8-coverage", 61 Version: "0.2.3", 62 PURL: "pkg:npm/%40bcoe/v8-coverage@0.2.3", 63 Locations: locationSet, 64 Language: pkg.JavaScript, 65 MetadataType: pkg.NpmPackageLockJSONMetadataType, 66 Metadata: pkg.NpmPackageLockJSONMetadata{}, 67 Type: pkg.NpmPkg, 68 }, 69 } 70 71 pkgtest.TestFileParser(t, fixture, parsePnpmLock, expectedPkgs, expectedRelationships) 72 } 73 74 func TestParsePnpmV6Lock(t *testing.T) { 75 var expectedRelationships []artifact.Relationship 76 fixture := "test-fixtures/pnpm-v6/pnpm-lock.yaml" 77 78 locationSet := file.NewLocationSet(file.NewLocation(fixture)) 79 80 expectedPkgs := []pkg.Package{ 81 { 82 Name: "pnpm-v6", 83 Version: "0.0.0", 84 PURL: "pkg:npm/pnpm-v6@0.0.0", 85 Locations: locationSet, 86 Language: pkg.JavaScript, 87 MetadataType: pkg.NpmPackageLockJSONMetadataType, 88 Metadata: pkg.NpmPackageLockJSONMetadata{}, 89 Type: pkg.NpmPkg, 90 }, 91 { 92 Name: "@testing-library/jest-dom", 93 Version: "5.16.5", 94 PURL: "pkg:npm/%40testing-library/jest-dom@5.16.5", 95 Locations: locationSet, 96 Language: pkg.JavaScript, 97 MetadataType: pkg.NpmPackageLockJSONMetadataType, 98 Metadata: pkg.NpmPackageLockJSONMetadata{}, 99 Type: pkg.NpmPkg, 100 }, 101 { 102 Name: "@testing-library/react", 103 Version: "13.4.0", 104 PURL: "pkg:npm/%40testing-library/react@13.4.0", 105 Locations: locationSet, 106 Language: pkg.JavaScript, 107 MetadataType: pkg.NpmPackageLockJSONMetadataType, 108 Metadata: pkg.NpmPackageLockJSONMetadata{}, 109 Type: pkg.NpmPkg, 110 }, 111 { 112 Name: "@testing-library/user-event", 113 Version: "13.5.0", 114 PURL: "pkg:npm/%40testing-library/user-event@13.5.0", 115 Locations: locationSet, 116 Language: pkg.JavaScript, 117 MetadataType: pkg.NpmPackageLockJSONMetadataType, 118 Metadata: pkg.NpmPackageLockJSONMetadata{}, 119 Type: pkg.NpmPkg, 120 }, 121 { 122 Name: "react", 123 Version: "18.2.0", 124 PURL: "pkg:npm/react@18.2.0", 125 Locations: locationSet, 126 Language: pkg.JavaScript, 127 MetadataType: pkg.NpmPackageLockJSONMetadataType, 128 Metadata: pkg.NpmPackageLockJSONMetadata{}, 129 Type: pkg.NpmPkg, 130 }, 131 { 132 Name: "react-dom", 133 Version: "18.2.0", 134 PURL: "pkg:npm/react-dom@18.2.0", 135 Locations: locationSet, 136 Language: pkg.JavaScript, 137 MetadataType: pkg.NpmPackageLockJSONMetadataType, 138 Metadata: pkg.NpmPackageLockJSONMetadata{}, 139 Type: pkg.NpmPkg, 140 }, 141 { 142 Name: "web-vitals", 143 Version: "2.1.4", 144 PURL: "pkg:npm/web-vitals@2.1.4", 145 Locations: locationSet, 146 Language: pkg.JavaScript, 147 MetadataType: pkg.NpmPackageLockJSONMetadataType, 148 Metadata: pkg.NpmPackageLockJSONMetadata{}, 149 Type: pkg.NpmPkg, 150 }, 151 { 152 Name: "@babel/core", 153 Version: "7.21.4", 154 PURL: "pkg:npm/%40babel/core@7.21.4", 155 Locations: locationSet, 156 Language: pkg.JavaScript, 157 MetadataType: pkg.NpmPackageLockJSONMetadataType, 158 Metadata: pkg.NpmPackageLockJSONMetadata{}, 159 Type: pkg.NpmPkg, 160 }, 161 { 162 Name: "@types/eslint", 163 Version: "8.37.0", 164 PURL: "pkg:npm/%40types/eslint@8.37.0", 165 Locations: locationSet, 166 Language: pkg.JavaScript, 167 MetadataType: pkg.NpmPackageLockJSONMetadataType, 168 Metadata: pkg.NpmPackageLockJSONMetadata{}, 169 Type: pkg.NpmPkg, 170 }, 171 { 172 Name: "read-cache", 173 Version: "1.0.0", 174 PURL: "pkg:npm/read-cache@1.0.0", 175 Locations: locationSet, 176 Language: pkg.JavaScript, 177 MetadataType: pkg.NpmPackageLockJSONMetadataType, 178 Metadata: pkg.NpmPackageLockJSONMetadata{}, 179 Type: pkg.NpmPkg, 180 }, 181 { 182 Name: "schema-utils", 183 Version: "3.1.2", 184 PURL: "pkg:npm/schema-utils@3.1.2", 185 Locations: locationSet, 186 Language: pkg.JavaScript, 187 MetadataType: pkg.NpmPackageLockJSONMetadataType, 188 Metadata: pkg.NpmPackageLockJSONMetadata{}, 189 Type: pkg.NpmPkg, 190 }, 191 } 192 193 pkgtest.TestFileParser(t, fixture, parsePnpmLock, expectedPkgs, expectedRelationships) 194 }