pkg/policyreports/engine_test.go
Rama main · réplica de lectura del repositorio original.
package policyreports
import "testing"
func TestEngineForSource(t *testing.T) {
tests := []struct {
name string
source string
want Engine
}{
// Every one of these three was observed in the results[] of a
// single Kyverno 1.18.2 cluster — the reason raw-source filtering
// is not an option.
{"legacy kyverno", "kyverno", EngineKyverno},
{"modern validating", "KyvernoValidatingPolicy", EngineKyverno},
{"modern generating", "KyvernoGeneratingPolicy", EngineKyverno},
{"modern image validating", "KyvernoImageValidatingPolicy", EngineKyverno},
{"modern mutating", "KyvernoMutatingPolicy", EngineKyverno},
{"unreleased kyverno policy type still attributes", "KyvernoSomeFuturePolicy", EngineKyverno},
{"vap", "ValidatingAdmissionPolicy", EngineVAP},
{"map", "MutatingAdmissionPolicy", EngineVAP},
{"trivy vulnerability", "Trivy Vulnerability", EngineTrivy},
{"trivy operator", "trivy-operator", EngineTrivy},
{"falco", "falco", EngineFalco},
{"falcosidekick", "falcosidekick", EngineFalco},
{"case insensitive", "KYVERNO", EngineKyverno},
{"whitespace trimmed", " kyverno ", EngineKyverno},
{"empty is unknown not other", "", EngineUnknown},
{"whitespace only is unknown", " ", EngineUnknown},
{"unrecognized producer is other", "some-vendor-scanner", EngineOther},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := EngineForSource(tt.source); got != tt.want {
t.Errorf("EngineForSource(%q) = %q, want %q", tt.source, got, tt.want)
}
})
}
}
// A Kyverno-owned policy type whose name also ends in "AdmissionPolicy"
// must attribute to Kyverno, not VAP — the prefix rule has to win. Pinned
// separately because the two rules are order-dependent and a reorder would
// otherwise pass every other case.
func TestEngineForSourceKyvernoPrefixBeatsAdmissionPolicySuffix(t *testing.T) {
if got := EngineForSource("KyvernoValidatingAdmissionPolicy"); got != EngineKyverno {
t.Errorf("got %q, want %q", got, EngineKyverno)
}
}
func TestFindingEngineDerivesFromSource(t *testing.T) {
f := Finding{Source: "KyvernoValidatingPolicy"}
if got := f.Engine(); got != EngineKyverno {
t.Errorf("Finding.Engine() = %q, want %q", got, EngineKyverno)
}
// A finding from a report that never set source must not masquerade as
// an attributable one.
if got := (Finding{}).Engine(); got != EngineUnknown {
t.Errorf("zero Finding.Engine() = %q, want %q", got, EngineUnknown)
}
}