Ctrl K
ComunidadGuías…

pkg/policyreports/engine_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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)
	}
}