@@ -3,6 +3,7 @@ package v1beta1
33import (
44 . "github.com/onsi/ginkgo"
55 . "github.com/onsi/gomega"
6+ corev1 "k8s.io/api/core/v1"
67 apierrors "k8s.io/apimachinery/pkg/api/errors"
78 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
89)
@@ -26,41 +27,80 @@ var _ = Describe("permission webhook", func() {
2627 },
2728 }
2829
29- It ("does not allow updates on user" , func () {
30- newPermission := permission .DeepCopy ()
31- newPermission .Spec .User = "new-user"
32- Expect (apierrors .IsForbidden (newPermission .ValidateUpdate (& permission ))).To (BeTrue ())
33- })
30+ Context ("ValidateUpdate" , func () {
31+ It ("does not allow updates on user" , func () {
32+ newPermission := permission .DeepCopy ()
33+ newPermission .Spec .User = "new-user"
34+ Expect (apierrors .IsForbidden (newPermission .ValidateUpdate (& permission ))).To (BeTrue ())
35+ })
3436
35- It ("does not allow updates on vhost" , func () {
36- newPermission := permission .DeepCopy ()
37- newPermission .Spec .Vhost = "new-vhost"
38- Expect (apierrors .IsForbidden (newPermission .ValidateUpdate (& permission ))).To (BeTrue ())
39- })
37+ It ("does not allow updates on userReference" , func () {
38+ permissionWithUserRef := permission .DeepCopy ()
39+ permissionWithUserRef .Spec .User = ""
40+ permissionWithUserRef .Spec .UserReference = & corev1.LocalObjectReference {Name : "a-user" }
41+ newPermission := permissionWithUserRef .DeepCopy ()
42+ newPermission .Spec .UserReference = & corev1.LocalObjectReference {Name : "a-new-user" }
43+ Expect (apierrors .IsForbidden (newPermission .ValidateUpdate (permissionWithUserRef ))).To (BeTrue ())
44+ })
4045
41- It ("does not allow updates on RabbitmqClusterReference" , func () {
42- newPermission := permission .DeepCopy ()
43- newPermission .Spec .RabbitmqClusterReference = RabbitmqClusterReference {
44- Name : "new-cluster" ,
45- }
46- Expect (apierrors .IsForbidden (newPermission .ValidateUpdate (& permission ))).To (BeTrue ())
47- })
46+ It ("does not allow updates on vhost" , func () {
47+ newPermission := permission .DeepCopy ()
48+ newPermission .Spec .Vhost = "new-vhost"
49+ Expect (apierrors .IsForbidden (newPermission .ValidateUpdate (& permission ))).To (BeTrue ())
50+ })
4851
49- It ("allows updates on permission.spec.permissions.configure" , func () {
50- newPermission := permission .DeepCopy ()
51- newPermission .Spec .Permissions .Configure = "?"
52- Expect (newPermission .ValidateUpdate (& permission )).To (Succeed ())
53- })
52+ It ("does not allow updates on RabbitmqClusterReference" , func () {
53+ newPermission := permission .DeepCopy ()
54+ newPermission .Spec .RabbitmqClusterReference = RabbitmqClusterReference {
55+ Name : "new-cluster" ,
56+ }
57+ Expect (apierrors .IsForbidden (newPermission .ValidateUpdate (& permission ))).To (BeTrue ())
58+ })
59+
60+ It ("allows updates on permission.spec.permissions.configure" , func () {
61+ newPermission := permission .DeepCopy ()
62+ newPermission .Spec .Permissions .Configure = "?"
63+ Expect (newPermission .ValidateUpdate (& permission )).To (Succeed ())
64+ })
65+
66+ It ("allows updates on permission.spec.permissions.read" , func () {
67+ newPermission := permission .DeepCopy ()
68+ newPermission .Spec .Permissions .Read = "?"
69+ Expect (newPermission .ValidateUpdate (& permission )).To (Succeed ())
70+ })
71+
72+ It ("allows updates on permission.spec.permissions.write" , func () {
73+ newPermission := permission .DeepCopy ()
74+ newPermission .Spec .Permissions .Write = "?"
75+ Expect (newPermission .ValidateUpdate (& permission )).To (Succeed ())
76+ })
77+
78+ It ("does not allow user and userReference to be specified at the same time" , func () {
79+ newPermission := permission .DeepCopy ()
80+ newPermission .Spec .UserReference = & corev1.LocalObjectReference {Name : "invalid" }
81+ Expect (apierrors .IsInvalid (newPermission .ValidateUpdate (& permission ))).To (BeTrue ())
82+ })
5483
55- It ("allows updates on permission.spec.permissions.read" , func () {
56- newPermission := permission .DeepCopy ()
57- newPermission .Spec .Permissions .Read = "?"
58- Expect (newPermission .ValidateUpdate (& permission )).To (Succeed ())
84+ It ("does not allow both user and userReference to be unset" , func () {
85+ newPermission := permission .DeepCopy ()
86+ newPermission .Spec .User = ""
87+ newPermission .Spec .UserReference = nil
88+ Expect (apierrors .IsInvalid (newPermission .ValidateUpdate (& permission ))).To (BeTrue ())
89+ })
5990 })
6091
61- It ("allows updates on permission.spec.permissions.write" , func () {
62- newPermission := permission .DeepCopy ()
63- newPermission .Spec .Permissions .Write = "?"
64- Expect (newPermission .ValidateUpdate (& permission )).To (Succeed ())
92+ Context ("ValidateCreate" , func () {
93+ It ("does not allow user and userReference to be specified at the same time" , func () {
94+ invalidPermission := permission .DeepCopy ()
95+ invalidPermission .Spec .UserReference = & corev1.LocalObjectReference {Name : "invalid" }
96+ invalidPermission .Spec .User = "test-user"
97+ Expect (apierrors .IsInvalid (invalidPermission .ValidateCreate ())).To (BeTrue ())
98+ })
99+ It ("does not allow both user and userReference to be unset" , func () {
100+ invalidPermission := permission .DeepCopy ()
101+ invalidPermission .Spec .UserReference = nil
102+ invalidPermission .Spec .User = ""
103+ Expect (apierrors .IsInvalid (invalidPermission .ValidateCreate ())).To (BeTrue ())
104+ })
65105 })
66106})
0 commit comments