Merge pull request #2662 from jwcesign/add-ut-v2

UT: add ut for rbac.go and webhook_configuration.go
This commit is contained in:
karmada-bot 2022-10-20 20:15:33 +08:00 committed by GitHub
commit 2a53cf8a4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 61 additions and 8 deletions

View File

@ -13,7 +13,7 @@ const (
)
// grantProxyPermissionToAdmin grants the proxy permission to "system:admin"
func grantProxyPermissionToAdmin(clientSet *kubernetes.Clientset) error {
func grantProxyPermissionToAdmin(clientSet kubernetes.Interface) error {
proxyAdminClusterRole := utils.ClusterRoleFromRules(clusterProxyAdminRole, []rbacv1.PolicyRule{
{
APIGroups: []string{"cluster.karmada.io"},
@ -41,7 +41,7 @@ func grantProxyPermissionToAdmin(clientSet *kubernetes.Clientset) error {
}
// grantAccessPermissionToAgent grants the limited access permmission to 'karmada-agent'
func grantAccessPermissionToAgent(clientSet *kubernetes.Clientset) error {
func grantAccessPermissionToAgent(clientSet kubernetes.Interface) error {
clusterRole := utils.ClusterRoleFromRules(karmadaAgentAccessClusterRole, []rbacv1.PolicyRule{
{
APIGroups: []string{"authentication.k8s.io"},

View File

@ -0,0 +1,23 @@
package karmada
import (
"testing"
"k8s.io/client-go/kubernetes/fake"
)
var noError = false
func Test_grantProxyPermissionToAdmin(t *testing.T) {
client := fake.NewSimpleClientset()
if err := grantProxyPermissionToAdmin(client); (err != nil) != noError {
t.Errorf("grantProxyPermissionToAdmin() error = %v, wantErr %v", err, noError)
}
}
func Test_grantAccessPermissionToAgent(t *testing.T) {
client := fake.NewSimpleClientset()
if err := grantAccessPermissionToAgent(client); (err != nil) != noError {
t.Errorf("grantAccessPermissionToAgent() error = %v, wantErr %v", err, noError)
}
}

View File

@ -159,7 +159,7 @@ webhooks:
timeoutSeconds: 3`, systemNamespace, caBundle)
}
func createValidatingWebhookConfiguration(c *kubernetes.Clientset, staticYaml string) error {
func createValidatingWebhookConfiguration(c kubernetes.Interface, staticYaml string) error {
obj := admissionregistrationv1.ValidatingWebhookConfiguration{}
if err := json.Unmarshal(utils.StaticYamlToJSONByte(staticYaml), &obj); err != nil {
@ -173,7 +173,7 @@ func createValidatingWebhookConfiguration(c *kubernetes.Clientset, staticYaml st
return nil
}
func createMutatingWebhookConfiguration(c *kubernetes.Clientset, staticYaml string) error {
func createMutatingWebhookConfiguration(c kubernetes.Interface, staticYaml string) error {
obj := admissionregistrationv1.MutatingWebhookConfiguration{}
if err := json.Unmarshal(utils.StaticYamlToJSONByte(staticYaml), &obj); err != nil {

View File

@ -0,0 +1,30 @@
package karmada
import (
"encoding/base64"
"testing"
"k8s.io/client-go/kubernetes/fake"
)
func Test_createValidatingWebhookConfiguration(t *testing.T) {
client := fake.NewSimpleClientset()
cfg := validatingConfig(base64.StdEncoding.EncodeToString([]byte("foo")), "bar")
if cfg == "" {
t.Errorf("validatingConfig() return = %v, want yaml config", cfg)
}
if err := createValidatingWebhookConfiguration(client, cfg); err != nil {
t.Errorf("createValidatingWebhookConfiguration() return = %v, want no error", err)
}
}
func Test_createMutatingWebhookConfiguration(t *testing.T) {
client := fake.NewSimpleClientset()
cfg := mutatingConfig(base64.StdEncoding.EncodeToString([]byte("foo")), "bar")
if cfg == "" {
t.Errorf("mutatingConfig() return = %v, want yaml config", cfg)
}
if err := createMutatingWebhookConfiguration(client, cfg); err != nil {
t.Errorf("createMutatingWebhookConfiguration() return = %v, want no error", err)
}
}

View File

@ -47,7 +47,7 @@ func ClusterRoleBindingFromSubjects(clusterRoleBindingName, clusterRoleName stri
}
// CreateIfNotExistClusterRole create ClusterRole when it doesn't exist
func CreateIfNotExistClusterRole(clientSet *kubernetes.Clientset, role *rbacv1.ClusterRole) error {
func CreateIfNotExistClusterRole(clientSet kubernetes.Interface, role *rbacv1.ClusterRole) error {
clusterRoleClient := clientSet.RbacV1().ClusterRoles()
_, err := clusterRoleClient.Get(context.TODO(), role.Name, metav1.GetOptions{})
if err != nil {
@ -68,7 +68,7 @@ func CreateIfNotExistClusterRole(clientSet *kubernetes.Clientset, role *rbacv1.C
}
// CreateIfNotExistClusterRoleBinding create ClusterRoleBinding when it doesn't exist
func CreateIfNotExistClusterRoleBinding(clientSet *kubernetes.Clientset, binding *rbacv1.ClusterRoleBinding) error {
func CreateIfNotExistClusterRoleBinding(clientSet kubernetes.Interface, binding *rbacv1.ClusterRoleBinding) error {
crbClient := clientSet.RbacV1().ClusterRoleBindings()
_, err := crbClient.Get(context.TODO(), binding.Name, metav1.GetOptions{})
if err != nil {
@ -89,7 +89,7 @@ func CreateIfNotExistClusterRoleBinding(clientSet *kubernetes.Clientset, binding
}
// CreateOrUpdateRole creates a Role if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.
func CreateOrUpdateRole(clientSet *kubernetes.Clientset, role *rbacv1.Role) error {
func CreateOrUpdateRole(clientSet kubernetes.Interface, role *rbacv1.Role) error {
if _, err := clientSet.RbacV1().Roles(role.ObjectMeta.Namespace).Create(context.TODO(), role, metav1.CreateOptions{}); err != nil {
if !apierrors.IsAlreadyExists(err) {
return fmt.Errorf("unable to create RBAC role: %v", err)
@ -105,7 +105,7 @@ func CreateOrUpdateRole(clientSet *kubernetes.Clientset, role *rbacv1.Role) erro
}
// CreateOrUpdateRoleBinding creates a RoleBinding if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.
func CreateOrUpdateRoleBinding(clientSet *kubernetes.Clientset, roleBinding *rbacv1.RoleBinding) error {
func CreateOrUpdateRoleBinding(clientSet kubernetes.Interface, roleBinding *rbacv1.RoleBinding) error {
if _, err := clientSet.RbacV1().RoleBindings(roleBinding.ObjectMeta.Namespace).Create(context.TODO(), roleBinding, metav1.CreateOptions{}); err != nil {
if !apierrors.IsAlreadyExists(err) {
return fmt.Errorf("unable to create RBAC rolebinding: %v", err)