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  }