github.com/anchore/syft@v1.38.2/syft/pkg/cataloger/dotnet/parse_packages_lock_test.go (about) 1 package dotnet 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 Test_corruptDotnetPackagesLock(t *testing.T) { 13 pkgtest.NewCatalogTester(). 14 FromFile(t, "test-fixtures/glob-paths/src/packages.lock.json"). 15 WithError(). 16 TestParser(t, parseDotnetPackagesLock) 17 } 18 19 func TestParseDotnetPackagesLock(t *testing.T) { 20 fixture := "test-fixtures/packages.lock.json" 21 fixtureLocationSet := file.NewLocationSet(file.NewLocation(fixture)) 22 23 autoMapperPkg := pkg.Package{ 24 Name: "AutoMapper", 25 Version: "13.0.1", 26 PURL: "pkg:nuget/AutoMapper@13.0.1", 27 Locations: fixtureLocationSet, 28 Language: pkg.Dotnet, 29 Type: pkg.DotnetPkg, 30 Metadata: pkg.DotnetPackagesLockEntry{ 31 Name: "AutoMapper", 32 Version: "13.0.1", 33 ContentHash: "/Fx1SbJ16qS7dU4i604Sle+U9VLX+WSNVJggk6MupKVkYvvBm4XqYaeFuf67diHefHKHs50uQIS2YEDFhPCakQ==", 34 Type: "Direct", 35 }, 36 } 37 38 bootstrapPkg := pkg.Package{ 39 Name: "bootstrap", 40 Version: "5.0.0", 41 PURL: "pkg:nuget/bootstrap@5.0.0", 42 Locations: fixtureLocationSet, 43 Language: pkg.Dotnet, 44 Type: pkg.DotnetPkg, 45 Metadata: pkg.DotnetPackagesLockEntry{ 46 Name: "bootstrap", 47 Version: "5.0.0", 48 ContentHash: "NKQFzFwrfWOMjTwr+X/2iJyCveuAGF+fNzkxyB0YW45+InVhcE9PUxoL1a8Vmc/Lq9E/CQd4DjO8kU32P4w/Gg==", 49 Type: "Direct", 50 }, 51 } 52 53 log4netPkg := pkg.Package{ 54 Name: "log4net", 55 Version: "2.0.5", 56 PURL: "pkg:nuget/log4net@2.0.5", 57 Locations: fixtureLocationSet, 58 Language: pkg.Dotnet, 59 Type: pkg.DotnetPkg, 60 Metadata: pkg.DotnetPackagesLockEntry{ 61 Name: "log4net", 62 Version: "2.0.5", 63 ContentHash: "AEqPZz+v+OikfnR2SqRVdQPnSaLq5y9Iz1CfRQZ9kTKPYCXHG6zYmDHb7wJotICpDLMr/JqokyjiqKAjUKp0ng==", 64 Type: "Direct", 65 }, 66 } 67 68 log4net1Pkg := pkg.Package{ 69 Name: "log4net", 70 Version: "1.2.15", 71 PURL: "pkg:nuget/log4net@1.2.15", 72 Locations: fixtureLocationSet, 73 Language: pkg.Dotnet, 74 Type: pkg.DotnetPkg, 75 Metadata: pkg.DotnetPackagesLockEntry{ 76 Name: "log4net", 77 Version: "1.2.15", 78 ContentHash: "KPajjkU1rbF6uY2rnakbh36LB9z9FVcYlciyOi6C5SJ3AMNywxjCGxBTN/Hl5nQEinRLuWvHWPF8W7YHh9sONw==", 79 Type: "Direct", 80 }, 81 } 82 83 dependencyInjectionAbstractionsPkg := pkg.Package{ 84 Name: "Microsoft.Extensions.DependencyInjection.Abstractions", 85 Version: "9.0.0", 86 PURL: "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@9.0.0", 87 Locations: fixtureLocationSet, 88 Language: pkg.Dotnet, 89 Type: pkg.DotnetPkg, 90 Metadata: pkg.DotnetPackagesLockEntry{ 91 Name: "Microsoft.Extensions.DependencyInjection.Abstractions", 92 Version: "9.0.0", 93 ContentHash: "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==", 94 Type: "Transitive", 95 }, 96 } 97 98 extensionOptionsPkg := pkg.Package{ 99 Name: "Microsoft.Extensions.Options", 100 Version: "9.0.0", 101 PURL: "pkg:nuget/Microsoft.Extensions.Options@9.0.0", 102 Locations: fixtureLocationSet, 103 Language: pkg.Dotnet, 104 Type: pkg.DotnetPkg, 105 Metadata: pkg.DotnetPackagesLockEntry{ 106 Name: "Microsoft.Extensions.Options", 107 Version: "9.0.0", 108 ContentHash: "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==", 109 Type: "Transitive", 110 }, 111 } 112 113 extensionPrimitivesPkg := pkg.Package{ 114 Name: "Microsoft.Extensions.Primitives", 115 Version: "9.0.0", 116 PURL: "pkg:nuget/Microsoft.Extensions.Primitives@9.0.0", 117 Locations: fixtureLocationSet, 118 Language: pkg.Dotnet, 119 Type: pkg.DotnetPkg, 120 Metadata: pkg.DotnetPackagesLockEntry{ 121 Name: "Microsoft.Extensions.Primitives", 122 Version: "9.0.0", 123 ContentHash: "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==", 124 Type: "Transitive", 125 }, 126 } 127 128 compilerServicesUnsafePkg := pkg.Package{ 129 Name: "System.Runtime.CompilerServices.Unsafe", 130 Version: "9.0.0", 131 PURL: "pkg:nuget/System.Runtime.CompilerServices.Unsafe@9.0.0", 132 Locations: fixtureLocationSet, 133 Language: pkg.Dotnet, 134 Type: pkg.DotnetPkg, 135 Metadata: pkg.DotnetPackagesLockEntry{ 136 Name: "System.Runtime.CompilerServices.Unsafe", 137 Version: "9.0.0", 138 ContentHash: "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", 139 Type: "Transitive", 140 }, 141 } 142 143 microsoftLoggingPkg := pkg.Package{ 144 Name: "Microsoft.Extensions.Logging", 145 Version: "9.0.0", 146 PURL: "pkg:nuget/Microsoft.Extensions.Logging@9.0.0", 147 Locations: fixtureLocationSet, 148 Language: pkg.Dotnet, 149 Type: pkg.DotnetPkg, 150 Metadata: pkg.DotnetPackagesLockEntry{ 151 Name: "Microsoft.Extensions.Logging", 152 Version: "9.0.0", 153 ContentHash: "crjWyORoug0kK7RSNJBTeSE6VX8IQgLf3nUpTB9m62bPXp/tzbnOsnbe8TXEG0AASNaKZddnpHKw7fET8E++Pg==", 154 Type: "Direct", 155 }, 156 } 157 158 expectedPkgs := []pkg.Package{ 159 autoMapperPkg, 160 compilerServicesUnsafePkg, 161 dependencyInjectionAbstractionsPkg, 162 microsoftLoggingPkg, 163 extensionOptionsPkg, 164 extensionPrimitivesPkg, 165 bootstrapPkg, 166 log4net1Pkg, 167 log4netPkg, 168 } 169 170 expectedRelationships := []artifact.Relationship{ 171 { 172 From: autoMapperPkg, 173 To: extensionOptionsPkg, 174 Type: artifact.DependencyOfRelationship, 175 }, 176 { 177 From: extensionOptionsPkg, 178 To: dependencyInjectionAbstractionsPkg, 179 Type: artifact.DependencyOfRelationship, 180 }, 181 { 182 From: extensionOptionsPkg, 183 To: extensionPrimitivesPkg, 184 Type: artifact.DependencyOfRelationship, 185 }, 186 { 187 From: extensionPrimitivesPkg, 188 To: compilerServicesUnsafePkg, 189 Type: artifact.DependencyOfRelationship, 190 }, 191 { 192 From: microsoftLoggingPkg, 193 To: extensionOptionsPkg, 194 Type: artifact.DependencyOfRelationship, 195 }, 196 } 197 198 pkgtest.TestFileParser(t, fixture, parseDotnetPackagesLock, expectedPkgs, expectedRelationships) 199 }