Skip to content

Commit

Permalink
Added Testing for the SPDX SBOM Reader (#1086)
Browse files Browse the repository at this point in the history
- Added testing for the SPDX SBOM reader
  • Loading branch information
neilnaveen committed Jul 2, 2024
1 parent a3d9335 commit 556817b
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 0 deletions.
3 changes: 3 additions & 0 deletions internal/sbom/fixtures/spdx-empty.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"spdxVersion": "SPDX-2.2"
}
23 changes: 23 additions & 0 deletions internal/sbom/fixtures/spdx.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"spdxVersion": "SPDX-2.2",
"packages": [
{
"name": "HdrHistogram",
"externalRefs": [
{
"referenceType": "purl",
"referenceLocator": "pkg:maven/org.hdrhistogram/HdrHistogram@2.1.12"
}
]
},
{
"name": "Apache Log4j Core",
"externalRefs": [
{
"referenceType": "purl",
"referenceLocator": "pkg:maven/org.apache.logging.log4j/log4j-core@2.16.0"
}
]
}
]
}
60 changes: 60 additions & 0 deletions internal/sbom/spdx_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package sbom_test

import (
"os"
"path/filepath"
"testing"

"github.com/google/go-cmp/cmp"
"github.com/google/osv-scanner/internal/sbom"
)

func runSPDXGetPackages(t *testing.T, bomFile string, want []sbom.Identifier) {
t.Helper()

f, err := os.Open(filepath.Join("fixtures", bomFile))
if err != nil {
t.Fatalf("Failed to read fixture file: %v", err)
}
defer f.Close()

got := []sbom.Identifier{}
callback := func(id sbom.Identifier) error {
got = append(got, id)
return nil
}

spdx := &sbom.SPDX{}
err = spdx.GetPackages(f, callback)
if err != nil {
t.Errorf("GetPackages returned an error: %v", err)
}

if diff := cmp.Diff(want, got); diff != "" {
t.Errorf("GetPackages() returned an unexpected result (-want, +got):\n%s", diff)
}
}

func TestSPDXGetPackages(t *testing.T) {
t.Parallel()
tests := []struct {
spdxFile string
identifiers []sbom.Identifier
}{
{
spdxFile: "spdx.json",
identifiers: []sbom.Identifier{
{PURL: "pkg:maven/org.hdrhistogram/HdrHistogram@2.1.12"},
{PURL: "pkg:maven/org.apache.logging.log4j/log4j-core@2.16.0"},
},
},
{
spdxFile: "spdx-empty.json",
identifiers: []sbom.Identifier{},
},
}

for _, tt := range tests {
runSPDXGetPackages(t, tt.spdxFile, tt.identifiers)
}
}

0 comments on commit 556817b

Please sign in to comment.