Merge pull request #3117 from my-git9/utrbac

[ut] add ut for utils/rbac.go
This commit is contained in:
karmada-bot 2023-02-08 16:34:50 +08:00 committed by GitHub
commit 59227f0d4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 120 additions and 0 deletions

View File

@ -0,0 +1,120 @@
package utils
import (
"reflect"
"testing"
rbacv1 "k8s.io/api/rbac/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func TestClusterRoleFromRules(t *testing.T) {
type args struct {
name string
rules []rbacv1.PolicyRule
labels map[string]string
}
tests := []struct {
name string
args args
want *rbacv1.ClusterRole
}{
{
name: "get clusterrole from rules",
args: args{
name: "foo",
rules: []rbacv1.PolicyRule{
{
APIGroups: []string{"cluster.karmada.io"},
Resources: []string{"clusters/proxy"},
Verbs: []string{"*"},
},
},
labels: map[string]string{"foo": "bar"},
},
want: &rbacv1.ClusterRole{
TypeMeta: metav1.TypeMeta{
APIVersion: "rbac.authorization.k8s.io/v1",
Kind: "ClusterRole",
},
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"foo": "bar"},
},
Rules: []rbacv1.PolicyRule{
{
APIGroups: []string{"cluster.karmada.io"},
Resources: []string{"clusters/proxy"},
Verbs: []string{"*"},
},
},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := ClusterRoleFromRules(tt.args.name, tt.args.rules, tt.args.labels); !reflect.DeepEqual(got, tt.want) {
t.Errorf("ClusterRoleFromRules() = %v, want %v", got, tt.want)
}
})
}
}
func TestClusterRoleBindingFromSubjects(t *testing.T) {
type args struct {
clusterRoleBindingName string
clusterRoleName string
sub []rbacv1.Subject
labels map[string]string
}
tests := []struct {
name string
args args
want *rbacv1.ClusterRoleBinding
}{
{
name: "get clusterrolebinding from sub",
args: args{
clusterRoleBindingName: "foo",
clusterRoleName: "bar",
sub: []rbacv1.Subject{
{
Kind: "ServiceAccount",
Namespace: "karmada",
Name: "foo",
},
},
labels: map[string]string{"foo": "bar"},
},
want: &rbacv1.ClusterRoleBinding{
TypeMeta: metav1.TypeMeta{
APIVersion: "rbac.authorization.k8s.io/v1",
Kind: "ClusterRoleBinding",
},
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Labels: map[string]string{"foo": "bar"},
},
RoleRef: rbacv1.RoleRef{
APIGroup: "rbac.authorization.k8s.io",
Kind: "ClusterRole",
Name: "bar",
},
Subjects: []rbacv1.Subject{
{
Kind: "ServiceAccount",
Namespace: "karmada",
Name: "foo",
},
},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := ClusterRoleBindingFromSubjects(tt.args.clusterRoleBindingName, tt.args.clusterRoleName, tt.args.sub, tt.args.labels); !reflect.DeepEqual(got, tt.want) {
t.Errorf("ClusterRoleBindingFromSubjects() = %v, want %v", got, tt.want)
}
})
}
}