package utils import ( "testing" v1 "github.com/kyverno/kyverno/api/kyverno/v1" engineapi "github.com/kyverno/kyverno/pkg/engine/api" "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func TestGetWarningMessages(t *testing.T) { type args struct { engineResponses []*engineapi.EngineResponse } tests := []struct { name string args args want []string }{{ name: "nil response", args: args{nil}, want: nil, }, { name: "enmpty response", args: args{[]*engineapi.EngineResponse{}}, want: nil, }, { name: "warning", args: args{[]*engineapi.EngineResponse{ { Policy: &v1.ClusterPolicy{ ObjectMeta: metav1.ObjectMeta{ Name: "test", }, }, PolicyResponse: engineapi.PolicyResponse{ Rules: []engineapi.RuleResponse{ { Name: "rule", Status: engineapi.RuleStatusWarn, Message: "message warn", }, }, }, }, }}, want: []string{ "policy test.rule: message warn", }, }, { name: "multiple rules", args: args{[]*engineapi.EngineResponse{ { Policy: &v1.ClusterPolicy{ ObjectMeta: metav1.ObjectMeta{ Name: "test", }, }, PolicyResponse: engineapi.PolicyResponse{ Rules: []engineapi.RuleResponse{ { Name: "rule-pass", Status: engineapi.RuleStatusPass, Message: "message pass", }, { Name: "rule-warn", Status: engineapi.RuleStatusWarn, Message: "message warn", }, { Name: "rule-fail", Status: engineapi.RuleStatusFail, Message: "message fail", }, { Name: "rule-error", Status: engineapi.RuleStatusError, Message: "message error", }, { Name: "rule-skip", Status: engineapi.RuleStatusSkip, Message: "message skip", }, }, }, }, }}, want: []string{ "policy test.rule-warn: message warn", "policy test.rule-fail: message fail", "policy test.rule-error: message error", }, }} for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := GetWarningMessages(tt.args.engineResponses) assert.Equal(t, tt.want, got) }) } }