Cybersecurity-Projects/PROJECTS/intermediate/sbom-generator-vulnerabilit.../internal/scanner/scanner_test.go

82 lines
1.8 KiB
Go

// ©AngelaMos | 2026
// scanner_test.go
package scanner
import (
"path/filepath"
"runtime"
"testing"
"github.com/CarterPerez-dev/bomber/internal/parser"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func testdataDir(t *testing.T) string {
t.Helper()
_, filename, _, ok := runtime.Caller(0)
require.True(t, ok)
return filepath.Join(filepath.Dir(filename), "..", "..", "testdata")
}
func TestScanGoProject(t *testing.T) {
reg := parser.NewRegistry()
parser.RegisterAll(reg)
s := New(reg)
result, err := s.Scan(filepath.Join(testdataDir(t), "go-project"))
require.NoError(t, err)
assert.Len(t, result.Graphs, 1)
assert.Greater(t, result.TotalPkgs, 0)
}
func TestScanNodeProject(t *testing.T) {
reg := parser.NewRegistry()
parser.RegisterAll(reg)
s := New(reg)
result, err := s.Scan(filepath.Join(testdataDir(t), "node-project"))
require.NoError(t, err)
assert.Len(t, result.Graphs, 1)
assert.Greater(t, result.TotalPkgs, 0)
}
func TestScanPythonProject(t *testing.T) {
reg := parser.NewRegistry()
parser.RegisterAll(reg)
s := New(reg)
result, err := s.Scan(filepath.Join(testdataDir(t), "python-project"))
require.NoError(t, err)
assert.Len(t, result.Graphs, 1)
assert.Greater(t, result.TotalPkgs, 0)
}
func TestScanMonorepo(t *testing.T) {
reg := parser.NewRegistry()
parser.RegisterAll(reg)
s := New(reg)
result, err := s.Scan(filepath.Join(testdataDir(t), "monorepo"))
require.NoError(t, err)
assert.GreaterOrEqual(t, len(result.Graphs), 2)
assert.GreaterOrEqual(t, len(result.Ecosystems), 2)
}
func TestScanEmptyProject(t *testing.T) {
reg := parser.NewRegistry()
parser.RegisterAll(reg)
s := New(reg)
result, err := s.Scan(filepath.Join(testdataDir(t), "empty-project"))
require.NoError(t, err)
assert.Empty(t, result.Graphs)
assert.Equal(t, 0, result.TotalPkgs)
}