@@ -64,6 +64,29 @@ func TestControllerRBACSyncConfig(t *testing.T) {
64
64
},
65
65
},
66
66
67
+ // Ensure that we can bind cluster roles.
68
+ {
69
+ input : newRBACSyncConfig ("testing" , "clusterrole" ,
70
+ []rbacsyncv1alpha.Membership {
71
+ newMembership ("group0" ,
72
+ []rbacv1.Subject {
73
+ newUserSubject ("user0" ),
74
+ newUserSubject ("user1" ),
75
+ }),
76
+ },
77
+ []rbacsyncv1alpha.Binding {
78
+ newBinding ("group0" , "role0" , "Role" ),
79
+ newBinding ("group0" , "role1" , "ClusterRole" ),
80
+ newBinding ("upstream" , "role0" , "Role" ),
81
+ }),
82
+ events : []string {
83
+ "Normal ConfigEnqueued RBACSyncConfig testing/clusterrole enqueued" ,
84
+ "Normal BindingConfigured RoleBinding testing/clusterrole-group0-role0 configured" ,
85
+ "Normal BindingConfigured RoleBinding testing/clusterrole-group0-role1 configured" ,
86
+ "Normal BindingConfigured RoleBinding testing/clusterrole-upstream-role0 configured" ,
87
+ },
88
+ },
89
+
67
90
// Ensure that we can reference a role in two separate bindings.
68
91
{
69
92
input : newRBACSyncConfig ("testing" , "duplicates" ,
@@ -106,16 +129,13 @@ func TestControllerRBACSyncConfig(t *testing.T) {
106
129
},
107
130
[]rbacsyncv1alpha.Binding {
108
131
newBinding ("group0" , "role0" , "Role" ),
109
-
110
- // This will cause a failure event because we cannot
111
- // create clusterroles from the non-cluster version.
112
- newBinding ("group0" , "role1" , "ClusterRole" ),
132
+ newBinding ("group0" , "role1" , "ThisRoleTypeDoesNotExist" ),
113
133
newBinding ("upstream" , "role0" , "Role" ),
114
134
}),
115
135
events : []string {
116
136
"Normal ConfigEnqueued RBACSyncConfig testing/invalidrole enqueued" ,
117
137
"Normal BindingConfigured RoleBinding testing/invalidrole-group0-role0 configured" ,
118
- "Warning BindingError RoleRef kind \" ClusterRole \" invalid for RBACSyncConfig on group \" group0\" , use only Role" ,
138
+ "Warning BindingError RoleRef kind \" ThisRoleTypeDoesNotExist \" invalid for RBACSyncConfig on group \" group0\" , use only Role or ClusterRole " ,
119
139
"Normal BindingConfigured RoleBinding testing/invalidrole-upstream-role0 configured" ,
120
140
},
121
141
},
@@ -716,7 +736,9 @@ func makeExpectedRoleBindings(t *testing.T, config *rbacsyncv1alpha.RBACSyncConf
716
736
717
737
seen := map [string ]struct {}{}
718
738
for _ , binding := range config .Spec .Bindings {
719
- if binding .RoleRef .Kind != "Role" {
739
+ switch binding .RoleRef .Kind {
740
+ case "Role" , "ClusterRole" :
741
+ default :
720
742
// these are skipped
721
743
continue
722
744
}
0 commit comments