github.com/anchore/syft@v1.38.2/syft/format/purls/encoder_test.go (about)

     1  package purls
     2  
     3  import (
     4  	"flag"
     5  	"testing"
     6  
     7  	"github.com/anchore/syft/syft/format/internal/testutil"
     8  	"github.com/anchore/syft/syft/pkg"
     9  	"github.com/anchore/syft/syft/sbom"
    10  )
    11  
    12  var updateSnapshot = flag.Bool("update-purls", false, "update the *.golden files for purls format")
    13  
    14  func Test_Encoder(t *testing.T) {
    15  	pkgs := []pkg.Package{
    16  		{
    17  			Name:     "npmtest",
    18  			Version:  "1.5.1",
    19  			Type:     pkg.NpmPkg,
    20  			Language: pkg.JavaScript,
    21  			PURL:     "pkg:npm/npmtest@1.5.1",
    22  		},
    23  		{
    24  			Name:     "npmtest2",
    25  			Version:  "1.5.1",
    26  			Type:     pkg.NpmPkg,
    27  			Language: pkg.JavaScript,
    28  			PURL:     "pkg:npm/npmtest@1.5.1", // duplicate should not be included
    29  		},
    30  		{
    31  			Name:     "npmtest",
    32  			Version:  "3.1.1",
    33  			Type:     pkg.NpmPkg,
    34  			Language: pkg.JavaScript,
    35  			PURL:     "http://npm/npmtest@3.1.1", // invalid PURL should not be included
    36  		},
    37  		{
    38  			Name:     "javatest",
    39  			Version:  "0.30.1",
    40  			Type:     pkg.JavaPkg,
    41  			Language: pkg.Java,
    42  			PURL:     "pkg:maven/org.apache/javatest@0.30.1",
    43  		},
    44  		{
    45  			Type: pkg.UnknownPkg,
    46  			PURL: "pkg:generic/generic@1.2.3",
    47  		},
    48  	}
    49  	testutil.AssertEncoderAgainstGoldenSnapshot(t,
    50  		testutil.EncoderSnapshotTestConfig{
    51  			Subject: sbom.SBOM{Artifacts: sbom.Artifacts{
    52  				Packages: pkg.NewCollection(pkgs...),
    53  			}},
    54  			Format:                      NewFormatEncoder(),
    55  			UpdateSnapshot:              *updateSnapshot,
    56  			PersistRedactionsInSnapshot: true,
    57  			IsJSON:                      false,
    58  		},
    59  	)
    60  }