github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/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/lineaje-labs/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:      "nanoid",
    21  			Version:   "3.3.4",
    22  			PURL:      "pkg:npm/nanoid@3.3.4",
    23  			Locations: locationSet,
    24  			Language:  pkg.JavaScript,
    25  			Type:      pkg.NpmPkg,
    26  		},
    27  		{
    28  			Name:      "picocolors",
    29  			Version:   "1.0.0",
    30  			PURL:      "pkg:npm/picocolors@1.0.0",
    31  			Locations: locationSet,
    32  			Language:  pkg.JavaScript,
    33  			Type:      pkg.NpmPkg,
    34  		},
    35  		{
    36  			Name:      "source-map-js",
    37  			Version:   "1.0.2",
    38  			PURL:      "pkg:npm/source-map-js@1.0.2",
    39  			Locations: locationSet,
    40  			Language:  pkg.JavaScript,
    41  			Type:      pkg.NpmPkg,
    42  		},
    43  		{
    44  			Name:      "@bcoe/v8-coverage",
    45  			Version:   "0.2.3",
    46  			PURL:      "pkg:npm/%40bcoe/v8-coverage@0.2.3",
    47  			Locations: locationSet,
    48  			Language:  pkg.JavaScript,
    49  			Type:      pkg.NpmPkg,
    50  		},
    51  	}
    52  
    53  	pkgtest.TestFileParser(t, fixture, parsePnpmLock, expectedPkgs, expectedRelationships)
    54  }
    55  
    56  func TestParsePnpmV6Lock(t *testing.T) {
    57  	var expectedRelationships []artifact.Relationship
    58  	fixture := "test-fixtures/pnpm-v6/pnpm-lock.yaml"
    59  
    60  	locationSet := file.NewLocationSet(file.NewLocation(fixture))
    61  
    62  	expectedPkgs := []pkg.Package{
    63  		{
    64  			Name:      "@testing-library/jest-dom",
    65  			Version:   "5.16.5",
    66  			PURL:      "pkg:npm/%40testing-library/jest-dom@5.16.5",
    67  			Locations: locationSet,
    68  			Language:  pkg.JavaScript,
    69  			Type:      pkg.NpmPkg,
    70  		},
    71  		{
    72  			Name:      "@testing-library/react",
    73  			Version:   "13.4.0",
    74  			PURL:      "pkg:npm/%40testing-library/react@13.4.0",
    75  			Locations: locationSet,
    76  			Language:  pkg.JavaScript,
    77  			Type:      pkg.NpmPkg,
    78  		},
    79  		{
    80  			Name:      "@testing-library/user-event",
    81  			Version:   "13.5.0",
    82  			PURL:      "pkg:npm/%40testing-library/user-event@13.5.0",
    83  			Locations: locationSet,
    84  			Language:  pkg.JavaScript,
    85  			Type:      pkg.NpmPkg,
    86  		},
    87  		{
    88  			Name:      "react",
    89  			Version:   "18.2.0",
    90  			PURL:      "pkg:npm/react@18.2.0",
    91  			Locations: locationSet,
    92  			Language:  pkg.JavaScript,
    93  			Type:      pkg.NpmPkg,
    94  		},
    95  		{
    96  			Name:      "react-dom",
    97  			Version:   "18.2.0",
    98  			PURL:      "pkg:npm/react-dom@18.2.0",
    99  			Locations: locationSet,
   100  			Language:  pkg.JavaScript,
   101  			Type:      pkg.NpmPkg,
   102  		},
   103  		{
   104  			Name:      "web-vitals",
   105  			Version:   "2.1.4",
   106  			PURL:      "pkg:npm/web-vitals@2.1.4",
   107  			Locations: locationSet,
   108  			Language:  pkg.JavaScript,
   109  			Type:      pkg.NpmPkg,
   110  		},
   111  		{
   112  			Name:      "@babel/core",
   113  			Version:   "7.21.4",
   114  			PURL:      "pkg:npm/%40babel/core@7.21.4",
   115  			Locations: locationSet,
   116  			Language:  pkg.JavaScript,
   117  			Type:      pkg.NpmPkg,
   118  		},
   119  		{
   120  			Name:      "@types/eslint",
   121  			Version:   "8.37.0",
   122  			PURL:      "pkg:npm/%40types/eslint@8.37.0",
   123  			Locations: locationSet,
   124  			Language:  pkg.JavaScript,
   125  			Type:      pkg.NpmPkg,
   126  		},
   127  		{
   128  			Name:      "read-cache",
   129  			Version:   "1.0.0",
   130  			PURL:      "pkg:npm/read-cache@1.0.0",
   131  			Locations: locationSet,
   132  			Language:  pkg.JavaScript,
   133  			Type:      pkg.NpmPkg,
   134  		},
   135  		{
   136  			Name:      "schema-utils",
   137  			Version:   "3.1.2",
   138  			PURL:      "pkg:npm/schema-utils@3.1.2",
   139  			Locations: locationSet,
   140  			Language:  pkg.JavaScript,
   141  			Type:      pkg.NpmPkg,
   142  		},
   143  	}
   144  
   145  	pkgtest.TestFileParser(t, fixture, parsePnpmLock, expectedPkgs, expectedRelationships)
   146  }