go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/npm/packagejson_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package npm_test
     5  
     6  import (
     7  	"os"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"go.mondoo.com/cnquery/providers-sdk/v1/upstream/mvd"
    12  	"go.mondoo.com/cnquery/providers/os/resources/npm"
    13  )
    14  
    15  func TestPackageJsonParser(t *testing.T) {
    16  	data, err := os.Open("./testdata/express-package.json")
    17  	if err != nil {
    18  		t.Fatal(err)
    19  	}
    20  
    21  	pkgs, err := npm.ParsePackageJson(data)
    22  	assert.Nil(t, err)
    23  	assert.Equal(t, 31, len(pkgs))
    24  
    25  	assert.Contains(t, pkgs, &mvd.Package{
    26  		Name:      "path-to-regexp",
    27  		Version:   "0.1.7",
    28  		Format:    "npm",
    29  		Namespace: "nodejs",
    30  	})
    31  
    32  	// "range-parser": "~1.2.0",
    33  	// TODO: we need to be better at version ranges
    34  	assert.Contains(t, pkgs, &mvd.Package{
    35  		Name:      "range-parser",
    36  		Version:   "~1.2.0",
    37  		Format:    "npm",
    38  		Namespace: "nodejs",
    39  	})
    40  }
    41  
    42  func TestPackageJsonLockParser(t *testing.T) {
    43  	data, err := os.Open("./testdata/workbox-package-lock.json")
    44  	if err != nil {
    45  		t.Fatal(err)
    46  	}
    47  
    48  	pkgs, err := npm.ParsePackageJsonLock(data)
    49  	assert.Nil(t, err)
    50  	assert.Equal(t, 1300, len(pkgs))
    51  
    52  	assert.Contains(t, pkgs, &mvd.Package{
    53  		Name:      "@babel/generator",
    54  		Version:   "7.0.0",
    55  		Format:    "npm",
    56  		Namespace: "nodejs",
    57  	})
    58  
    59  	assert.Contains(t, pkgs, &mvd.Package{
    60  		Name:      "@lerna/changed",
    61  		Version:   "3.3.2",
    62  		Format:    "npm",
    63  		Namespace: "nodejs",
    64  	})
    65  }