@@ -20,8 +20,10 @@ import (
20
20
21
21
admissionv1 "k8s.io/api/admission/v1"
22
22
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
23
+ networkingv1 "k8s.io/api/networking/v1"
23
24
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24
25
"k8s.io/apimachinery/pkg/runtime"
26
+ "k8s.io/apimachinery/pkg/runtime/schema"
25
27
26
28
"github.com/cruise-automation/k-rail/v3/policies"
27
29
)
@@ -30,14 +32,19 @@ func TestPolicyDisallowNGINXSnippet(t *testing.T) {
30
32
ctx := context .Background ()
31
33
32
34
tests := []struct {
33
- name string
34
- ingressExt * extensionsv1beta1.Ingress
35
+ name string
36
+ ingress interface {
37
+ GetObjectKind () schema.ObjectKind
38
+ }
35
39
violations int
36
40
}{
37
41
{
38
42
name : "deny 1" ,
39
43
violations : 1 ,
40
- ingressExt : & extensionsv1beta1.Ingress {
44
+ ingress : & extensionsv1beta1.Ingress {
45
+ TypeMeta : metav1.TypeMeta {
46
+ APIVersion : "extensions/v1beta1" ,
47
+ },
41
48
ObjectMeta : metav1.ObjectMeta {
42
49
Annotations : map [string ]string {
43
50
"nginx.ingress.kubernetes.io/server-snippet" : "i'm malicious" ,
@@ -48,7 +55,25 @@ func TestPolicyDisallowNGINXSnippet(t *testing.T) {
48
55
{
49
56
name : "deny 2" ,
50
57
violations : 2 ,
51
- ingressExt : & extensionsv1beta1.Ingress {
58
+ ingress : & extensionsv1beta1.Ingress {
59
+ TypeMeta : metav1.TypeMeta {
60
+ APIVersion : "networking.k8s.io/v1beta1" ,
61
+ },
62
+ ObjectMeta : metav1.ObjectMeta {
63
+ Annotations : map [string ]string {
64
+ "nginx.ingress.kubernetes.io/server-snippet" : "i'm malicious" ,
65
+ "nginx.ingress.kubernetes.io/auth-snippet" : "me too" ,
66
+ },
67
+ },
68
+ },
69
+ },
70
+ {
71
+ name : "deny 3" ,
72
+ violations : 2 ,
73
+ ingress : & networkingv1.Ingress {
74
+ TypeMeta : metav1.TypeMeta {
75
+ APIVersion : "networking.k8s.io/v1" ,
76
+ },
52
77
ObjectMeta : metav1.ObjectMeta {
53
78
Annotations : map [string ]string {
54
79
"nginx.ingress.kubernetes.io/server-snippet" : "i'm malicious" ,
@@ -60,7 +85,7 @@ func TestPolicyDisallowNGINXSnippet(t *testing.T) {
60
85
{
61
86
name : "allow" ,
62
87
violations : 0 ,
63
- ingressExt : & extensionsv1beta1.Ingress {
88
+ ingress : & extensionsv1beta1.Ingress {
64
89
ObjectMeta : metav1.ObjectMeta {
65
90
Annotations : map [string ]string {
66
91
"foo" : "bar" ,
@@ -71,16 +96,16 @@ func TestPolicyDisallowNGINXSnippet(t *testing.T) {
71
96
}
72
97
for _ , tt := range tests {
73
98
t .Run (tt .name , func (t * testing.T ) {
74
- var ar = & admissionv1. AdmissionRequest {}
75
-
76
- if tt . ingressExt != nil {
77
- raw , _ := json . Marshal ( tt . ingressExt )
78
- ar = & admissionv1. AdmissionRequest {
79
- Namespace : "namespace" ,
80
- Name : "name" ,
81
- Object : runtime. RawExtension { Raw : raw } ,
82
- Resource : metav1. GroupVersionResource { Group : "extensions" , Version : "v1beta1" , Resource : " ingresses"} ,
83
- }
99
+ raw , _ := json . Marshal ( tt . ingress )
100
+ ar := & admissionv1. AdmissionRequest {
101
+ Namespace : "namespace" ,
102
+ Name : "name" ,
103
+ Object : runtime. RawExtension { Raw : raw },
104
+ Resource : metav1. GroupVersionResource {
105
+ Group : tt . ingress . GetObjectKind (). GroupVersionKind (). Group ,
106
+ Version : tt . ingress . GetObjectKind (). GroupVersionKind (). Version ,
107
+ Resource : " ingresses" ,
108
+ },
84
109
}
85
110
86
111
v := PolicyDisallowNGINXSnippet {}
0 commit comments