github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/dotnet/parse_dotnet_deps_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 TestParseDotnetDeps(t *testing.T) { 13 fixture := "test-fixtures/TestLibrary.deps.json" 14 fixtureLocationSet := file.NewLocationSet(file.NewLocation(fixture)) 15 rootPkg := pkg.Package{ 16 Name: "TestLibrary", 17 Version: "1.0.0", 18 PURL: "pkg:nuget/TestLibrary@1.0.0", 19 Locations: fixtureLocationSet, 20 Language: pkg.Dotnet, 21 Type: pkg.DotnetPkg, 22 MetadataType: pkg.DotnetDepsMetadataType, 23 Metadata: pkg.DotnetDepsMetadata{ 24 Name: "TestLibrary", 25 Version: "1.0.0", 26 }, 27 } 28 testCommon := pkg.Package{ 29 Name: "TestCommon", 30 Version: "1.0.0", 31 PURL: "pkg:nuget/TestCommon@1.0.0", 32 Locations: fixtureLocationSet, 33 Language: pkg.Dotnet, 34 Type: pkg.DotnetPkg, 35 MetadataType: pkg.DotnetDepsMetadataType, 36 Metadata: pkg.DotnetDepsMetadata{ 37 Name: "TestCommon", 38 Version: "1.0.0", 39 }, 40 } 41 awssdkcore := pkg.Package{ 42 Name: "AWSSDK.Core", 43 Version: "3.7.10.6", 44 PURL: "pkg:nuget/AWSSDK.Core@3.7.10.6", 45 Locations: fixtureLocationSet, 46 Language: pkg.Dotnet, 47 Type: pkg.DotnetPkg, 48 MetadataType: pkg.DotnetDepsMetadataType, 49 Metadata: pkg.DotnetDepsMetadata{ 50 Name: "AWSSDK.Core", 51 Version: "3.7.10.6", 52 Sha512: "sha512-kHBB+QmosVaG6DpngXQ8OlLVVNMzltNITfsRr68Z90qO7dSqJ2EHNd8dtBU1u3AQQLqqFHOY0lfmbpexeH6Pew==", 53 Path: "awssdk.core/3.7.10.6", 54 HashPath: "awssdk.core.3.7.10.6.nupkg.sha512", 55 }, 56 } 57 msftDependencyInjectionAbstractions := pkg.Package{ 58 Name: "Microsoft.Extensions.DependencyInjection.Abstractions", 59 Version: "6.0.0", 60 PURL: "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0", 61 Locations: fixtureLocationSet, 62 Language: pkg.Dotnet, 63 Type: pkg.DotnetPkg, 64 MetadataType: pkg.DotnetDepsMetadataType, 65 Metadata: pkg.DotnetDepsMetadata{ 66 Name: "Microsoft.Extensions.DependencyInjection.Abstractions", 67 Version: "6.0.0", 68 Sha512: "sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==", 69 Path: "microsoft.extensions.dependencyinjection.abstractions/6.0.0", 70 HashPath: "microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512", 71 }, 72 } 73 msftDependencyInjection := pkg.Package{ 74 Name: "Microsoft.Extensions.DependencyInjection", 75 Version: "6.0.0", 76 PURL: "pkg:nuget/Microsoft.Extensions.DependencyInjection@6.0.0", 77 Locations: fixtureLocationSet, 78 Language: pkg.Dotnet, 79 Type: pkg.DotnetPkg, 80 MetadataType: pkg.DotnetDepsMetadataType, 81 Metadata: pkg.DotnetDepsMetadata{ 82 Name: "Microsoft.Extensions.DependencyInjection", 83 Version: "6.0.0", 84 Sha512: "sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==", 85 Path: "microsoft.extensions.dependencyinjection/6.0.0", 86 HashPath: "microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512", 87 }, 88 } 89 msftLoggingAbstractions := pkg.Package{ 90 Name: "Microsoft.Extensions.Logging.Abstractions", 91 Version: "6.0.0", 92 PURL: "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0", 93 Locations: fixtureLocationSet, 94 Language: pkg.Dotnet, 95 Type: pkg.DotnetPkg, 96 MetadataType: pkg.DotnetDepsMetadataType, 97 Metadata: pkg.DotnetDepsMetadata{ 98 Name: "Microsoft.Extensions.Logging.Abstractions", 99 Version: "6.0.0", 100 Sha512: "sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==", 101 Path: "microsoft.extensions.logging.abstractions/6.0.0", 102 HashPath: "microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512", 103 }, 104 } 105 msftExtensionsLogging := pkg.Package{ 106 Name: "Microsoft.Extensions.Logging", 107 Version: "6.0.0", 108 PURL: "pkg:nuget/Microsoft.Extensions.Logging@6.0.0", 109 Locations: fixtureLocationSet, 110 Language: pkg.Dotnet, 111 Type: pkg.DotnetPkg, 112 MetadataType: pkg.DotnetDepsMetadataType, 113 Metadata: pkg.DotnetDepsMetadata{ 114 Name: "Microsoft.Extensions.Logging", 115 Version: "6.0.0", 116 Sha512: "sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==", 117 Path: "microsoft.extensions.logging/6.0.0", 118 HashPath: "microsoft.extensions.logging.6.0.0.nupkg.sha512", 119 }, 120 } 121 msftExtensionsOptions := pkg.Package{ 122 Name: "Microsoft.Extensions.Options", 123 Version: "6.0.0", 124 PURL: "pkg:nuget/Microsoft.Extensions.Options@6.0.0", 125 Locations: fixtureLocationSet, 126 Language: pkg.Dotnet, 127 Type: pkg.DotnetPkg, 128 MetadataType: pkg.DotnetDepsMetadataType, 129 Metadata: pkg.DotnetDepsMetadata{ 130 Name: "Microsoft.Extensions.Options", 131 Version: "6.0.0", 132 Sha512: "sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==", 133 Path: "microsoft.extensions.options/6.0.0", 134 HashPath: "microsoft.extensions.options.6.0.0.nupkg.sha512", 135 }, 136 } 137 msftExtensionsPrimitives := pkg.Package{ 138 Name: "Microsoft.Extensions.Primitives", 139 Version: "6.0.0", 140 PURL: "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0", 141 Locations: fixtureLocationSet, 142 Language: pkg.Dotnet, 143 Type: pkg.DotnetPkg, 144 MetadataType: pkg.DotnetDepsMetadataType, 145 Metadata: pkg.DotnetDepsMetadata{ 146 Name: "Microsoft.Extensions.Primitives", 147 Version: "6.0.0", 148 Sha512: "sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==", 149 Path: "microsoft.extensions.primitives/6.0.0", 150 HashPath: "microsoft.extensions.primitives.6.0.0.nupkg.sha512", 151 }, 152 } 153 newtonsoftJson := pkg.Package{ 154 Name: "Newtonsoft.Json", 155 Version: "13.0.1", 156 PURL: "pkg:nuget/Newtonsoft.Json@13.0.1", 157 Locations: fixtureLocationSet, 158 Language: pkg.Dotnet, 159 Type: pkg.DotnetPkg, 160 MetadataType: pkg.DotnetDepsMetadataType, 161 Metadata: pkg.DotnetDepsMetadata{ 162 Name: "Newtonsoft.Json", 163 Version: "13.0.1", 164 Sha512: "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==", 165 Path: "newtonsoft.json/13.0.1", 166 HashPath: "newtonsoft.json.13.0.1.nupkg.sha512", 167 }, 168 } 169 serilogSinksConsole := pkg.Package{ 170 Name: "Serilog.Sinks.Console", 171 Version: "4.0.1", 172 PURL: "pkg:nuget/Serilog.Sinks.Console@4.0.1", 173 Locations: fixtureLocationSet, 174 Language: pkg.Dotnet, 175 Type: pkg.DotnetPkg, 176 MetadataType: pkg.DotnetDepsMetadataType, 177 Metadata: pkg.DotnetDepsMetadata{ 178 Name: "Serilog.Sinks.Console", 179 Version: "4.0.1", 180 Sha512: "sha512-apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==", 181 Path: "serilog.sinks.console/4.0.1", 182 HashPath: "serilog.sinks.console.4.0.1.nupkg.sha512", 183 }, 184 } 185 serilog := pkg.Package{ 186 Name: "Serilog", 187 Version: "2.10.0", 188 PURL: "pkg:nuget/Serilog@2.10.0", 189 Locations: fixtureLocationSet, 190 Language: pkg.Dotnet, 191 Type: pkg.DotnetPkg, 192 MetadataType: pkg.DotnetDepsMetadataType, 193 Metadata: pkg.DotnetDepsMetadata{ 194 Name: "Serilog", 195 Version: "2.10.0", 196 Sha512: "sha512-+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA==", 197 Path: "serilog/2.10.0", 198 HashPath: "serilog.2.10.0.nupkg.sha512", 199 }, 200 } 201 systemDiagnosticsDiagnosticsource := pkg.Package{ 202 Name: "System.Diagnostics.DiagnosticSource", 203 Version: "6.0.0", 204 PURL: "pkg:nuget/System.Diagnostics.DiagnosticSource@6.0.0", 205 Locations: fixtureLocationSet, 206 Language: pkg.Dotnet, 207 Type: pkg.DotnetPkg, 208 MetadataType: pkg.DotnetDepsMetadataType, 209 Metadata: pkg.DotnetDepsMetadata{ 210 Name: "System.Diagnostics.DiagnosticSource", 211 Version: "6.0.0", 212 Sha512: "sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==", 213 Path: "system.diagnostics.diagnosticsource/6.0.0", 214 HashPath: "system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512", 215 }, 216 } 217 systemRuntimeCompilerServicesUnsafe := pkg.Package{ 218 Name: "System.Runtime.CompilerServices.Unsafe", 219 Version: "6.0.0", 220 PURL: "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0", 221 Locations: fixtureLocationSet, 222 Language: pkg.Dotnet, 223 Type: pkg.DotnetPkg, 224 MetadataType: pkg.DotnetDepsMetadataType, 225 Metadata: pkg.DotnetDepsMetadata{ 226 Name: "System.Runtime.CompilerServices.Unsafe", 227 Version: "6.0.0", 228 Sha512: "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", 229 Path: "system.runtime.compilerservices.unsafe/6.0.0", 230 HashPath: "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", 231 }, 232 } 233 234 expectedPkgs := []pkg.Package{ 235 awssdkcore, 236 msftDependencyInjection, 237 msftDependencyInjectionAbstractions, 238 msftExtensionsLogging, 239 msftLoggingAbstractions, 240 msftExtensionsOptions, 241 msftExtensionsPrimitives, 242 newtonsoftJson, 243 serilog, 244 serilogSinksConsole, 245 systemDiagnosticsDiagnosticsource, 246 systemRuntimeCompilerServicesUnsafe, 247 testCommon, 248 rootPkg, 249 } 250 251 expectedRelationships := []artifact.Relationship{ 252 { 253 From: awssdkcore, 254 To: testCommon, 255 Type: artifact.DependencyOfRelationship, 256 }, 257 { 258 From: msftDependencyInjection, 259 To: msftExtensionsLogging, 260 Type: artifact.DependencyOfRelationship, 261 }, 262 { 263 From: msftDependencyInjection, 264 To: rootPkg, 265 Type: artifact.DependencyOfRelationship, 266 }, 267 { 268 From: msftDependencyInjectionAbstractions, 269 To: msftDependencyInjection, 270 Type: artifact.DependencyOfRelationship, 271 }, 272 { 273 From: msftDependencyInjectionAbstractions, 274 To: msftExtensionsLogging, 275 Type: artifact.DependencyOfRelationship, 276 }, 277 { 278 From: msftDependencyInjectionAbstractions, 279 To: msftExtensionsOptions, 280 Type: artifact.DependencyOfRelationship, 281 }, 282 { 283 From: msftExtensionsLogging, 284 To: rootPkg, 285 Type: artifact.DependencyOfRelationship, 286 }, 287 { 288 From: msftLoggingAbstractions, 289 To: msftExtensionsLogging, 290 Type: artifact.DependencyOfRelationship, 291 }, 292 { 293 From: msftExtensionsOptions, 294 To: msftExtensionsLogging, 295 Type: artifact.DependencyOfRelationship, 296 }, 297 { 298 From: msftExtensionsPrimitives, 299 To: msftExtensionsOptions, 300 Type: artifact.DependencyOfRelationship, 301 }, 302 { 303 From: newtonsoftJson, 304 To: rootPkg, 305 Type: artifact.DependencyOfRelationship, 306 }, 307 { 308 From: serilog, 309 To: serilogSinksConsole, 310 Type: artifact.DependencyOfRelationship, 311 }, 312 { 313 From: serilog, 314 To: rootPkg, 315 Type: artifact.DependencyOfRelationship, 316 }, 317 { 318 From: serilogSinksConsole, 319 To: rootPkg, 320 Type: artifact.DependencyOfRelationship, 321 }, 322 { 323 From: systemDiagnosticsDiagnosticsource, 324 To: msftExtensionsLogging, 325 Type: artifact.DependencyOfRelationship, 326 }, 327 { 328 From: systemRuntimeCompilerServicesUnsafe, 329 To: msftDependencyInjection, 330 Type: artifact.DependencyOfRelationship, 331 }, 332 { 333 From: systemRuntimeCompilerServicesUnsafe, 334 To: msftExtensionsPrimitives, 335 Type: artifact.DependencyOfRelationship, 336 }, 337 { 338 From: systemRuntimeCompilerServicesUnsafe, 339 To: systemDiagnosticsDiagnosticsource, 340 Type: artifact.DependencyOfRelationship, 341 }, 342 { 343 From: testCommon, 344 To: rootPkg, 345 Type: artifact.DependencyOfRelationship, 346 }, 347 } 348 349 pkgtest.TestFileParser(t, fixture, parseDotnetDeps, expectedPkgs, expectedRelationships) 350 }