1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-09 01:16:55 +00:00
kyverno/api/policies.kyverno.io/v1alpha1/validating_policy_test.go
Charles-Edouard Brétéché c0621cc3fc
chore: add VP api unit tests (#12248)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2025-02-25 18:31:33 +00:00

260 lines
5.7 KiB
Go

package v1alpha1
import (
"testing"
"github.com/stretchr/testify/assert"
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/ptr"
)
func TestValidatingPolicy_GetMatchConstraints(t *testing.T) {
tests := []struct {
name string
policy *ValidatingPolicy
want admissionregistrationv1.MatchResources
}{{
name: "nil",
policy: &ValidatingPolicy{},
want: admissionregistrationv1.MatchResources{},
}, {
name: "not nil",
policy: &ValidatingPolicy{
Spec: ValidatingPolicySpec{
MatchConstraints: &admissionregistrationv1.MatchResources{},
},
},
want: admissionregistrationv1.MatchResources{},
}}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.policy.GetMatchConstraints()
assert.Equal(t, tt.want, got)
})
}
}
func TestValidatingPolicy_GetMatchConditions(t *testing.T) {
tests := []struct {
name string
policy *ValidatingPolicy
want []admissionregistrationv1.MatchCondition
}{{
name: "nil",
policy: &ValidatingPolicy{},
want: nil,
}, {
name: "empty",
policy: &ValidatingPolicy{
Spec: ValidatingPolicySpec{
MatchConditions: []admissionregistrationv1.MatchCondition{},
},
},
want: []admissionregistrationv1.MatchCondition{},
}, {
name: "not empty",
policy: &ValidatingPolicy{
Spec: ValidatingPolicySpec{
MatchConditions: []admissionregistrationv1.MatchCondition{{
Name: "dummy",
Expression: "expression",
}},
},
},
want: []admissionregistrationv1.MatchCondition{{
Name: "dummy",
Expression: "expression",
}},
}}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.policy.GetMatchConditions()
assert.Equal(t, tt.want, got)
})
}
}
func TestValidatingPolicy_GetFailurePolicy(t *testing.T) {
tests := []struct {
name string
policy *ValidatingPolicy
want admissionregistrationv1.FailurePolicyType
}{{
name: "nil",
policy: &ValidatingPolicy{},
want: admissionregistrationv1.Fail,
}, {
name: "fail",
policy: &ValidatingPolicy{
Spec: ValidatingPolicySpec{
FailurePolicy: ptr.To(admissionregistrationv1.Fail),
},
},
want: admissionregistrationv1.Fail,
}, {
name: "ignore",
policy: &ValidatingPolicy{
Spec: ValidatingPolicySpec{
FailurePolicy: ptr.To(admissionregistrationv1.Ignore),
},
},
want: admissionregistrationv1.Ignore,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.policy.GetFailurePolicy()
assert.Equal(t, tt.want, got)
})
}
}
func TestValidatingPolicy_GetWebhookConfiguration(t *testing.T) {
tests := []struct {
name string
policy *ValidatingPolicy
want *WebhookConfiguration
}{{
name: "nil",
policy: &ValidatingPolicy{},
want: nil,
}, {
name: "fail",
policy: &ValidatingPolicy{
Spec: ValidatingPolicySpec{
WebhookConfiguration: &WebhookConfiguration{},
},
},
want: &WebhookConfiguration{},
}}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.policy.GetWebhookConfiguration()
assert.Equal(t, tt.want, got)
})
}
}
func TestValidatingPolicy_GetVariables(t *testing.T) {
tests := []struct {
name string
policy *ValidatingPolicy
want []admissionregistrationv1.Variable
}{{
name: "nil",
policy: &ValidatingPolicy{},
want: nil,
}, {
name: "empty",
policy: &ValidatingPolicy{
Spec: ValidatingPolicySpec{
Variables: []admissionregistrationv1.Variable{},
},
},
want: []admissionregistrationv1.Variable{},
}, {
name: "not empty",
policy: &ValidatingPolicy{
Spec: ValidatingPolicySpec{
Variables: []admissionregistrationv1.Variable{{
Name: "dummy",
Expression: "expression",
}},
},
},
want: []admissionregistrationv1.Variable{{
Name: "dummy",
Expression: "expression",
}},
}}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.policy.GetVariables()
assert.Equal(t, tt.want, got)
})
}
}
func TestValidatingPolicy_GetSpec(t *testing.T) {
tests := []struct {
name string
policy *ValidatingPolicy
want *ValidatingPolicySpec
}{{
name: "empty",
policy: &ValidatingPolicy{
Spec: ValidatingPolicySpec{
Variables: []admissionregistrationv1.Variable{},
},
},
want: &ValidatingPolicySpec{
Variables: []admissionregistrationv1.Variable{},
},
}, {
name: "not empty",
policy: &ValidatingPolicy{
Spec: ValidatingPolicySpec{
Variables: []admissionregistrationv1.Variable{{
Name: "dummy",
Expression: "expression",
}},
},
},
want: &ValidatingPolicySpec{
Variables: []admissionregistrationv1.Variable{{
Name: "dummy",
Expression: "expression",
}},
},
}}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.policy.GetSpec()
assert.Equal(t, tt.want, got)
})
}
}
func TestValidatingPolicy_GetStatus(t *testing.T) {
tests := []struct {
name string
policy *ValidatingPolicy
want *PolicyStatus
}{{
policy: &ValidatingPolicy{},
want: &PolicyStatus{},
}}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.policy.GetStatus()
assert.Equal(t, tt.want, got)
})
}
}
func TestValidatingPolicy_GetKind(t *testing.T) {
tests := []struct {
name string
policy *ValidatingPolicy
want string
}{{
name: "not set",
policy: &ValidatingPolicy{},
want: "ValidatingPolicy",
}, {
name: "not set",
policy: &ValidatingPolicy{
TypeMeta: v1.TypeMeta{
Kind: "Foo",
},
},
want: "ValidatingPolicy",
}}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.policy.GetKind()
assert.Equal(t, tt.want, got)
})
}
}