1
16
17 package v1alpha1_test
18
19 import (
20 "testing"
21
22 "github.com/google/go-cmp/cmp"
23
24 v1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
25 apiequality "k8s.io/apimachinery/pkg/api/equality"
26 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27 "k8s.io/apimachinery/pkg/runtime"
28 "k8s.io/kubernetes/pkg/api/legacyscheme"
29 _ "k8s.io/kubernetes/pkg/apis/admissionregistration/install"
30 )
31
32 func TestDefaultAdmissionPolicy(t *testing.T) {
33 fail := v1alpha1.Fail
34 equivalent := v1alpha1.Equivalent
35 allScopes := v1alpha1.AllScopes
36
37 tests := []struct {
38 name string
39 original runtime.Object
40 expected runtime.Object
41 }{
42 {
43 name: "ValidatingAdmissionPolicy",
44 original: &v1alpha1.ValidatingAdmissionPolicy{
45 Spec: v1alpha1.ValidatingAdmissionPolicySpec{
46 MatchConstraints: &v1alpha1.MatchResources{},
47 },
48 },
49 expected: &v1alpha1.ValidatingAdmissionPolicy{
50 Spec: v1alpha1.ValidatingAdmissionPolicySpec{
51 MatchConstraints: &v1alpha1.MatchResources{
52 MatchPolicy: &equivalent,
53 NamespaceSelector: &metav1.LabelSelector{},
54 ObjectSelector: &metav1.LabelSelector{},
55 },
56 FailurePolicy: &fail,
57 },
58 },
59 },
60 {
61 name: "ValidatingAdmissionPolicyBinding",
62 original: &v1alpha1.ValidatingAdmissionPolicyBinding{
63 Spec: v1alpha1.ValidatingAdmissionPolicyBindingSpec{
64 MatchResources: &v1alpha1.MatchResources{},
65 },
66 },
67 expected: &v1alpha1.ValidatingAdmissionPolicyBinding{
68 Spec: v1alpha1.ValidatingAdmissionPolicyBindingSpec{
69 MatchResources: &v1alpha1.MatchResources{
70 MatchPolicy: &equivalent,
71 NamespaceSelector: &metav1.LabelSelector{},
72 ObjectSelector: &metav1.LabelSelector{},
73 },
74 },
75 },
76 },
77 {
78 name: "scope=*",
79 original: &v1alpha1.ValidatingAdmissionPolicy{
80 Spec: v1alpha1.ValidatingAdmissionPolicySpec{
81 MatchConstraints: &v1alpha1.MatchResources{
82 ResourceRules: []v1alpha1.NamedRuleWithOperations{{}},
83 },
84 },
85 },
86 expected: &v1alpha1.ValidatingAdmissionPolicy{
87 Spec: v1alpha1.ValidatingAdmissionPolicySpec{
88 MatchConstraints: &v1alpha1.MatchResources{
89 MatchPolicy: &equivalent,
90 NamespaceSelector: &metav1.LabelSelector{},
91 ObjectSelector: &metav1.LabelSelector{},
92 ResourceRules: []v1alpha1.NamedRuleWithOperations{
93 {
94 RuleWithOperations: v1alpha1.RuleWithOperations{
95 Rule: v1alpha1.Rule{
96 Scope: &allScopes,
97 },
98 },
99 },
100 },
101 },
102 FailurePolicy: &fail,
103 },
104 },
105 },
106 }
107
108 for _, test := range tests {
109 t.Run(test.name, func(t *testing.T) {
110 original := test.original
111 expected := test.expected
112 legacyscheme.Scheme.Default(original)
113 if !apiequality.Semantic.DeepEqual(original, expected) {
114 t.Error(cmp.Diff(expected, original))
115 }
116 })
117 }
118 }
119
120 func TestDefaultAdmissionPolicyBinding(t *testing.T) {
121 denyAction := v1alpha1.DenyAction
122 equivalent := v1alpha1.Equivalent
123
124 tests := []struct {
125 name string
126 original runtime.Object
127 expected runtime.Object
128 }{
129 {
130 name: "ValidatingAdmissionPolicyBinding.ParamRef.ParameterNotFoundAction",
131 original: &v1alpha1.ValidatingAdmissionPolicyBinding{
132 Spec: v1alpha1.ValidatingAdmissionPolicyBindingSpec{
133 ParamRef: &v1alpha1.ParamRef{},
134 },
135 },
136 expected: &v1alpha1.ValidatingAdmissionPolicyBinding{
137 Spec: v1alpha1.ValidatingAdmissionPolicyBindingSpec{
138 ParamRef: &v1alpha1.ParamRef{
139 ParameterNotFoundAction: &denyAction,
140 },
141 },
142 },
143 },
144 {
145 name: "ValidatingAdmissionPolicyBinding.MatchResources",
146 original: &v1alpha1.ValidatingAdmissionPolicyBinding{
147 Spec: v1alpha1.ValidatingAdmissionPolicyBindingSpec{
148 MatchResources: &v1alpha1.MatchResources{},
149 },
150 },
151 expected: &v1alpha1.ValidatingAdmissionPolicyBinding{
152 Spec: v1alpha1.ValidatingAdmissionPolicyBindingSpec{
153 MatchResources: &v1alpha1.MatchResources{
154 NamespaceSelector: &metav1.LabelSelector{},
155 ObjectSelector: &metav1.LabelSelector{},
156 MatchPolicy: &equivalent,
157 },
158 },
159 },
160 },
161 }
162
163 for _, test := range tests {
164 t.Run(test.name, func(t *testing.T) {
165 original := test.original
166 expected := test.expected
167 legacyscheme.Scheme.Default(original)
168 if !apiequality.Semantic.DeepEqual(original, expected) {
169 t.Error(cmp.Diff(expected, original))
170 }
171 })
172 }
173 }
174
View as plain text