mirror of
https://github.com/trufflesecurity/trufflehog.git
synced 2024-11-10 15:14:38 +00:00
5a86c18302
* Fix include and exclude detector logic * Fix test * Add more clarifying comments
50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package engine
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/trufflesecurity/trufflehog/v3/pkg/detectors"
|
|
"github.com/trufflesecurity/trufflehog/v3/pkg/pb/detectorspb"
|
|
)
|
|
|
|
func TestDefaultDetectorsHaveUniqueVersions(t *testing.T) {
|
|
detectorTypeToVersions := make(map[detectorspb.DetectorType]map[int]struct{})
|
|
addVersion := func(versions map[int]struct{}, version int) map[int]struct{} {
|
|
if versions == nil {
|
|
versions = make(map[int]struct{})
|
|
}
|
|
versions[version] = struct{}{}
|
|
return versions
|
|
}
|
|
// Loop through all our default detectors and find the ones that
|
|
// implement Versioner. Of those, check each version number is unique.
|
|
for _, detector := range DefaultDetectors() {
|
|
v, ok := detector.(detectors.Versioner)
|
|
if !ok {
|
|
continue
|
|
}
|
|
version := v.Version()
|
|
key := detector.Type()
|
|
if set, ok := detectorTypeToVersions[key]; ok && set != nil {
|
|
if _, ok := set[version]; ok {
|
|
t.Errorf("detector %q has duplicate version: %d", detectorspb.DetectorType_name[int32(key)], version)
|
|
}
|
|
}
|
|
detectorTypeToVersions[key] = addVersion(detectorTypeToVersions[key], version)
|
|
}
|
|
}
|
|
|
|
func TestDefaultDetectorTypesImplementing(t *testing.T) {
|
|
isVersioner := DefaultDetectorTypesImplementing[detectors.Versioner]()
|
|
for _, detector := range DefaultDetectors() {
|
|
_, expectedOk := detector.(detectors.Versioner)
|
|
_, gotOk := isVersioner[detector.Type()]
|
|
if expectedOk == gotOk {
|
|
continue
|
|
}
|
|
t.Errorf(
|
|
"detector %q doesn't match expected",
|
|
detectorspb.DetectorType_name[int32(detector.Type())],
|
|
)
|
|
}
|
|
}
|