Cybersecurity-Projects/PROJECTS/intermediate/sbom-generator-vulnerabilit.../internal/parser/registry_test.go

49 lines
1.2 KiB
Go

// ©AngelaMos | 2026
// registry_test.go
package parser
import (
"testing"
"github.com/CarterPerez-dev/bomber/pkg/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
type stubParser struct {
ecosystem types.Ecosystem
detected bool
}
func (s *stubParser) Detect(string) bool { return s.detected }
func (s *stubParser) Parse(string) (*types.DependencyGraph, error) { return nil, nil }
func (s *stubParser) Ecosystem() types.Ecosystem { return s.ecosystem }
func TestRegistryDetect(t *testing.T) {
reg := NewRegistry()
goParser := &stubParser{ecosystem: types.EcosystemGo, detected: true}
nodeParser := &stubParser{ecosystem: types.EcosystemNode, detected: false}
reg.Register(goParser)
reg.Register(nodeParser)
detected := reg.Detect("some/dir")
require.Len(t, detected, 1)
assert.Equal(t, types.EcosystemGo, detected[0].Ecosystem())
}
func TestRegistryDetectEmpty(t *testing.T) {
reg := NewRegistry()
detected := reg.Detect("some/dir")
assert.Empty(t, detected)
}
func TestRegistryAll(t *testing.T) {
reg := NewRegistry()
reg.Register(&stubParser{ecosystem: types.EcosystemGo})
reg.Register(&stubParser{ecosystem: types.EcosystemNode})
assert.Len(t, reg.All(), 2)
}