...
1
16
17 package create
18
19 import (
20 "strconv"
21 "testing"
22
23 rbac "k8s.io/api/rbac/v1"
24 apiequality "k8s.io/apimachinery/pkg/api/equality"
25 v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26 )
27
28 func TestCreateClusterRoleBinding(t *testing.T) {
29 tests := []struct {
30 options *ClusterRoleBindingOptions
31 expected *rbac.ClusterRoleBinding
32 }{
33 {
34 options: &ClusterRoleBindingOptions{
35 ClusterRole: "fake-clusterrole",
36 Users: []string{"fake-user"},
37 Groups: []string{"fake-group"},
38 ServiceAccounts: []string{"fake-namespace:fake-account"},
39 Name: "fake-binding",
40 },
41 expected: &rbac.ClusterRoleBinding{
42 TypeMeta: v1.TypeMeta{
43 Kind: "ClusterRoleBinding",
44 APIVersion: "rbac.authorization.k8s.io/v1",
45 },
46 ObjectMeta: v1.ObjectMeta{
47 Name: "fake-binding",
48 },
49 RoleRef: rbac.RoleRef{
50 APIGroup: rbac.GroupName,
51 Kind: "ClusterRole",
52 Name: "fake-clusterrole",
53 },
54 Subjects: []rbac.Subject{
55 {
56 Kind: rbac.UserKind,
57 APIGroup: "rbac.authorization.k8s.io",
58 Name: "fake-user",
59 },
60 {
61 Kind: rbac.GroupKind,
62 APIGroup: "rbac.authorization.k8s.io",
63 Name: "fake-group",
64 },
65 {
66 Kind: rbac.ServiceAccountKind,
67 Namespace: "fake-namespace",
68 Name: "fake-account",
69 },
70 },
71 },
72 },
73 }
74
75 for i, tc := range tests {
76 t.Run(strconv.Itoa(i), func(t *testing.T) {
77 clusterRoleBinding, err := tc.options.createClusterRoleBinding()
78 if err != nil {
79 t.Errorf("unexpected error:\n%#v\n", err)
80 return
81 }
82 if !apiequality.Semantic.DeepEqual(clusterRoleBinding, tc.expected) {
83 t.Errorf("expected:\n%#v\ngot:\n%#v", tc.expected, clusterRoleBinding)
84 }
85 })
86 }
87
88 }
89
View as plain text