@@ -20,8 +20,10 @@ import (
2020
2121 admissionv1 "k8s.io/api/admission/v1"
2222 extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
23+ networkingv1 "k8s.io/api/networking/v1"
2324 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2425 "k8s.io/apimachinery/pkg/runtime"
26+ "k8s.io/apimachinery/pkg/runtime/schema"
2527
2628 "github.com/cruise-automation/k-rail/v3/policies"
2729)
@@ -30,14 +32,19 @@ func TestPolicyDisallowNGINXSnippet(t *testing.T) {
3032 ctx := context .Background ()
3133
3234 tests := []struct {
33- name string
34- ingressExt * extensionsv1beta1.Ingress
35+ name string
36+ ingress interface {
37+ GetObjectKind () schema.ObjectKind
38+ }
3539 violations int
3640 }{
3741 {
3842 name : "deny 1" ,
3943 violations : 1 ,
40- ingressExt : & extensionsv1beta1.Ingress {
44+ ingress : & extensionsv1beta1.Ingress {
45+ TypeMeta : metav1.TypeMeta {
46+ APIVersion : "extensions/v1beta1" ,
47+ },
4148 ObjectMeta : metav1.ObjectMeta {
4249 Annotations : map [string ]string {
4350 "nginx.ingress.kubernetes.io/server-snippet" : "i'm malicious" ,
@@ -48,7 +55,25 @@ func TestPolicyDisallowNGINXSnippet(t *testing.T) {
4855 {
4956 name : "deny 2" ,
5057 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+ },
5277 ObjectMeta : metav1.ObjectMeta {
5378 Annotations : map [string ]string {
5479 "nginx.ingress.kubernetes.io/server-snippet" : "i'm malicious" ,
@@ -60,7 +85,7 @@ func TestPolicyDisallowNGINXSnippet(t *testing.T) {
6085 {
6186 name : "allow" ,
6287 violations : 0 ,
63- ingressExt : & extensionsv1beta1.Ingress {
88+ ingress : & extensionsv1beta1.Ingress {
6489 ObjectMeta : metav1.ObjectMeta {
6590 Annotations : map [string ]string {
6691 "foo" : "bar" ,
@@ -71,16 +96,16 @@ func TestPolicyDisallowNGINXSnippet(t *testing.T) {
7196 }
7297 for _ , tt := range tests {
7398 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+ },
84109 }
85110
86111 v := PolicyDisallowNGINXSnippet {}
0 commit comments