go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/npm/yarn_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 TestYarnParser(t *testing.T) {
    16  	data, err := os.Open("./testdata/d3-yarn.lock")
    17  	if err != nil {
    18  		t.Fatal(err)
    19  	}
    20  
    21  	pkgs, err := npm.ParseYarnLock(data)
    22  	assert.Nil(t, err)
    23  	assert.Equal(t, 99, len(pkgs))
    24  
    25  	assert.Contains(t, pkgs, &mvd.Package{
    26  		Name:      "has",
    27  		Version:   "1.0.3",
    28  		Format:    "npm",
    29  		Namespace: "nodejs",
    30  	})
    31  
    32  	assert.Contains(t, pkgs, &mvd.Package{
    33  		Name:      "iconv-lite",
    34  		Version:   "0.4.24",
    35  		Format:    "npm",
    36  		Namespace: "nodejs",
    37  	})
    38  }
    39  
    40  func TestParsePackagename(t *testing.T) {
    41  	var name string
    42  	var version string
    43  	var err error
    44  
    45  	name, version, err = npm.ParseYarnPackageName("source-map-support@~0.5.10")
    46  	assert.Nil(t, err)
    47  	assert.Equal(t, "source-map-support", name)
    48  	assert.Equal(t, "~0.5.10", version)
    49  
    50  	name, version, err = npm.ParseYarnPackageName("@types/node@*")
    51  	assert.Nil(t, err)
    52  	assert.Equal(t, "@types/node", name)
    53  	assert.Equal(t, "*", version)
    54  
    55  	name, version, err = npm.ParseYarnPackageName("@babel/code-frame@^7.0.0-beta.47")
    56  	assert.Nil(t, err)
    57  	assert.Equal(t, "@babel/code-frame", name)
    58  	assert.Equal(t, "^7.0.0-beta.47", version)
    59  
    60  	name, version, err = npm.ParseYarnPackageName("has@^1.0.1, has@^1.0.3, has@~1.0.3")
    61  	assert.Nil(t, err)
    62  	assert.Equal(t, "has", name)
    63  	assert.Equal(t, "^1.0.1", version)
    64  }