github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/gosbom/pkg/cataloger/dotnet/parse_dotnet_deps_test.go (about)

     1  package dotnet
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/nextlinux/gosbom/gosbom/artifact"
     7  	"github.com/nextlinux/gosbom/gosbom/file"
     8  	"github.com/nextlinux/gosbom/gosbom/pkg"
     9  	"github.com/nextlinux/gosbom/gosbom/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  	expected := []pkg.Package{
    16  		{
    17  			Name:         "AWSSDK.Core",
    18  			Version:      "3.7.10.6",
    19  			PURL:         "pkg:nuget/AWSSDK.Core@3.7.10.6",
    20  			Locations:    fixtureLocationSet,
    21  			Language:     pkg.Dotnet,
    22  			Type:         pkg.DotnetPkg,
    23  			MetadataType: pkg.DotnetDepsMetadataType,
    24  			Metadata: pkg.DotnetDepsMetadata{
    25  				Name:     "AWSSDK.Core",
    26  				Version:  "3.7.10.6",
    27  				Sha512:   "sha512-kHBB+QmosVaG6DpngXQ8OlLVVNMzltNITfsRr68Z90qO7dSqJ2EHNd8dtBU1u3AQQLqqFHOY0lfmbpexeH6Pew==",
    28  				Path:     "awssdk.core/3.7.10.6",
    29  				HashPath: "awssdk.core.3.7.10.6.nupkg.sha512",
    30  			},
    31  		},
    32  		{
    33  			Name:         "Microsoft.Extensions.DependencyInjection.Abstractions",
    34  			Version:      "6.0.0",
    35  			PURL:         "pkg:nuget/Microsoft.Extensions.DependencyInjection.Abstractions@6.0.0",
    36  			Locations:    fixtureLocationSet,
    37  			Language:     pkg.Dotnet,
    38  			Type:         pkg.DotnetPkg,
    39  			MetadataType: pkg.DotnetDepsMetadataType,
    40  			Metadata: pkg.DotnetDepsMetadata{
    41  				Name:     "Microsoft.Extensions.DependencyInjection.Abstractions",
    42  				Version:  "6.0.0",
    43  				Sha512:   "sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==",
    44  				Path:     "microsoft.extensions.dependencyinjection.abstractions/6.0.0",
    45  				HashPath: "microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512",
    46  			},
    47  		},
    48  		{
    49  			Name:         "Microsoft.Extensions.DependencyInjection",
    50  			Version:      "6.0.0",
    51  			PURL:         "pkg:nuget/Microsoft.Extensions.DependencyInjection@6.0.0",
    52  			Locations:    fixtureLocationSet,
    53  			Language:     pkg.Dotnet,
    54  			Type:         pkg.DotnetPkg,
    55  			MetadataType: pkg.DotnetDepsMetadataType,
    56  			Metadata: pkg.DotnetDepsMetadata{
    57  				Name:     "Microsoft.Extensions.DependencyInjection",
    58  				Version:  "6.0.0",
    59  				Sha512:   "sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
    60  				Path:     "microsoft.extensions.dependencyinjection/6.0.0",
    61  				HashPath: "microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512",
    62  			},
    63  		},
    64  		{
    65  			Name:         "Microsoft.Extensions.Logging.Abstractions",
    66  			Version:      "6.0.0",
    67  			PURL:         "pkg:nuget/Microsoft.Extensions.Logging.Abstractions@6.0.0",
    68  			Locations:    fixtureLocationSet,
    69  			Language:     pkg.Dotnet,
    70  			Type:         pkg.DotnetPkg,
    71  			MetadataType: pkg.DotnetDepsMetadataType,
    72  			Metadata: pkg.DotnetDepsMetadata{
    73  				Name:     "Microsoft.Extensions.Logging.Abstractions",
    74  				Version:  "6.0.0",
    75  				Sha512:   "sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==",
    76  				Path:     "microsoft.extensions.logging.abstractions/6.0.0",
    77  				HashPath: "microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512",
    78  			},
    79  		},
    80  		{
    81  			Name:         "Microsoft.Extensions.Logging",
    82  			Version:      "6.0.0",
    83  			PURL:         "pkg:nuget/Microsoft.Extensions.Logging@6.0.0",
    84  			Locations:    fixtureLocationSet,
    85  			Language:     pkg.Dotnet,
    86  			Type:         pkg.DotnetPkg,
    87  			MetadataType: pkg.DotnetDepsMetadataType,
    88  			Metadata: pkg.DotnetDepsMetadata{
    89  				Name:     "Microsoft.Extensions.Logging",
    90  				Version:  "6.0.0",
    91  				Sha512:   "sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
    92  				Path:     "microsoft.extensions.logging/6.0.0",
    93  				HashPath: "microsoft.extensions.logging.6.0.0.nupkg.sha512",
    94  			},
    95  		},
    96  
    97  		{
    98  			Name:         "Microsoft.Extensions.Options",
    99  			Version:      "6.0.0",
   100  			PURL:         "pkg:nuget/Microsoft.Extensions.Options@6.0.0",
   101  			Locations:    fixtureLocationSet,
   102  			Language:     pkg.Dotnet,
   103  			Type:         pkg.DotnetPkg,
   104  			MetadataType: pkg.DotnetDepsMetadataType,
   105  			Metadata: pkg.DotnetDepsMetadata{
   106  				Name:     "Microsoft.Extensions.Options",
   107  				Version:  "6.0.0",
   108  				Sha512:   "sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
   109  				Path:     "microsoft.extensions.options/6.0.0",
   110  				HashPath: "microsoft.extensions.options.6.0.0.nupkg.sha512",
   111  			},
   112  		},
   113  		{
   114  			Name:         "Microsoft.Extensions.Primitives",
   115  			Version:      "6.0.0",
   116  			PURL:         "pkg:nuget/Microsoft.Extensions.Primitives@6.0.0",
   117  			Locations:    fixtureLocationSet,
   118  			Language:     pkg.Dotnet,
   119  			Type:         pkg.DotnetPkg,
   120  			MetadataType: pkg.DotnetDepsMetadataType,
   121  			Metadata: pkg.DotnetDepsMetadata{
   122  				Name:     "Microsoft.Extensions.Primitives",
   123  				Version:  "6.0.0",
   124  				Sha512:   "sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
   125  				Path:     "microsoft.extensions.primitives/6.0.0",
   126  				HashPath: "microsoft.extensions.primitives.6.0.0.nupkg.sha512",
   127  			},
   128  		},
   129  		{
   130  			Name:         "Newtonsoft.Json",
   131  			Version:      "13.0.1",
   132  			PURL:         "pkg:nuget/Newtonsoft.Json@13.0.1",
   133  			Locations:    fixtureLocationSet,
   134  			Language:     pkg.Dotnet,
   135  			Type:         pkg.DotnetPkg,
   136  			MetadataType: pkg.DotnetDepsMetadataType,
   137  			Metadata: pkg.DotnetDepsMetadata{
   138  				Name:     "Newtonsoft.Json",
   139  				Version:  "13.0.1",
   140  				Sha512:   "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
   141  				Path:     "newtonsoft.json/13.0.1",
   142  				HashPath: "newtonsoft.json.13.0.1.nupkg.sha512",
   143  			},
   144  		},
   145  		{
   146  			Name:         "Serilog.Sinks.Console",
   147  			Version:      "4.0.1",
   148  			PURL:         "pkg:nuget/Serilog.Sinks.Console@4.0.1",
   149  			Locations:    fixtureLocationSet,
   150  			Language:     pkg.Dotnet,
   151  			Type:         pkg.DotnetPkg,
   152  			MetadataType: pkg.DotnetDepsMetadataType,
   153  			Metadata: pkg.DotnetDepsMetadata{
   154  				Name:     "Serilog.Sinks.Console",
   155  				Version:  "4.0.1",
   156  				Sha512:   "sha512-apLOvSJQLlIbKlbx+Y2UDHSP05kJsV7mou+fvJoRGs/iR+jC22r8cuFVMjjfVxz/AD4B2UCltFhE1naRLXwKNw==",
   157  				Path:     "serilog.sinks.console/4.0.1",
   158  				HashPath: "serilog.sinks.console.4.0.1.nupkg.sha512",
   159  			},
   160  		},
   161  		{
   162  			Name:         "Serilog",
   163  			Version:      "2.10.0",
   164  			PURL:         "pkg:nuget/Serilog@2.10.0",
   165  			Locations:    fixtureLocationSet,
   166  			Language:     pkg.Dotnet,
   167  			Type:         pkg.DotnetPkg,
   168  			MetadataType: pkg.DotnetDepsMetadataType,
   169  			Metadata: pkg.DotnetDepsMetadata{
   170  				Name:     "Serilog",
   171  				Version:  "2.10.0",
   172  				Sha512:   "sha512-+QX0hmf37a0/OZLxM3wL7V6/ADvC1XihXN4Kq/p6d8lCPfgkRdiuhbWlMaFjR9Av0dy5F0+MBeDmDdRZN/YwQA==",
   173  				Path:     "serilog/2.10.0",
   174  				HashPath: "serilog.2.10.0.nupkg.sha512",
   175  			},
   176  		},
   177  		{
   178  			Name:         "System.Diagnostics.DiagnosticSource",
   179  			Version:      "6.0.0",
   180  			PURL:         "pkg:nuget/System.Diagnostics.DiagnosticSource@6.0.0",
   181  			Locations:    fixtureLocationSet,
   182  			Language:     pkg.Dotnet,
   183  			Type:         pkg.DotnetPkg,
   184  			MetadataType: pkg.DotnetDepsMetadataType,
   185  			Metadata: pkg.DotnetDepsMetadata{
   186  				Name:     "System.Diagnostics.DiagnosticSource",
   187  				Version:  "6.0.0",
   188  				Sha512:   "sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
   189  				Path:     "system.diagnostics.diagnosticsource/6.0.0",
   190  				HashPath: "system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512",
   191  			},
   192  		},
   193  		{
   194  			Name:         "System.Runtime.CompilerServices.Unsafe",
   195  			Version:      "6.0.0",
   196  			PURL:         "pkg:nuget/System.Runtime.CompilerServices.Unsafe@6.0.0",
   197  			Locations:    fixtureLocationSet,
   198  			Language:     pkg.Dotnet,
   199  			Type:         pkg.DotnetPkg,
   200  			MetadataType: pkg.DotnetDepsMetadataType,
   201  			Metadata: pkg.DotnetDepsMetadata{
   202  				Name:     "System.Runtime.CompilerServices.Unsafe",
   203  				Version:  "6.0.0",
   204  				Sha512:   "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
   205  				Path:     "system.runtime.compilerservices.unsafe/6.0.0",
   206  				HashPath: "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
   207  			},
   208  		},
   209  	}
   210  
   211  	var expectedRelationships []artifact.Relationship
   212  	pkgtest.TestFileParser(t, fixture, parseDotnetDeps, expected, expectedRelationships)
   213  }