229 lines
5.3 KiB
Go
229 lines
5.3 KiB
Go
package util
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"testing"
|
|
|
|
corev1 "k8s.io/api/core/v1"
|
|
rbacv1 "k8s.io/api/rbac/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"k8s.io/client-go/kubernetes"
|
|
"k8s.io/client-go/kubernetes/fake"
|
|
coretesting "k8s.io/client-go/testing"
|
|
)
|
|
|
|
var errorAction = func(coretesting.Action) (handled bool, ret runtime.Object, err error) {
|
|
return true, nil, fmt.Errorf("always error")
|
|
}
|
|
|
|
func TestCreateOrUpdateSecret(t *testing.T) {
|
|
type args struct {
|
|
client kubernetes.Interface
|
|
secret *corev1.Secret
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "create success",
|
|
args: args{
|
|
client: fake.NewSimpleClientset(),
|
|
secret: makeSecret("test"),
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "update success",
|
|
args: args{
|
|
client: fake.NewSimpleClientset(makeSecret("test")),
|
|
secret: makeSecret("test"),
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "create error",
|
|
args: args{
|
|
client: func() kubernetes.Interface {
|
|
c := fake.NewSimpleClientset()
|
|
c.PrependReactor("create", "*", func(action coretesting.Action) (handled bool, ret runtime.Object, err error) {
|
|
return true, nil, errors.New("create secret error")
|
|
})
|
|
return c
|
|
}(),
|
|
secret: makeSecret("test"),
|
|
},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "update error",
|
|
args: args{
|
|
client: func() kubernetes.Interface {
|
|
c := fake.NewSimpleClientset(makeSecret("test"))
|
|
c.PrependReactor("update", "*", func(action coretesting.Action) (handled bool, ret runtime.Object, err error) {
|
|
return true, nil, errors.New("update secret error")
|
|
})
|
|
return c
|
|
}(),
|
|
secret: makeSecret("test"),
|
|
},
|
|
wantErr: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if err := CreateOrUpdateSecret(tt.args.client, tt.args.secret); (err != nil) != tt.wantErr {
|
|
t.Errorf("CreateOrUpdateSecret() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func makeSecret(name string) *corev1.Secret {
|
|
return &corev1.Secret{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Namespace: metav1.NamespaceDefault,
|
|
Name: name,
|
|
},
|
|
}
|
|
}
|
|
|
|
func TestCreateOrUpdateClusterRole(t *testing.T) {
|
|
type args struct {
|
|
client kubernetes.Interface
|
|
clusterRole *rbacv1.ClusterRole
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "not exist and create",
|
|
args: args{
|
|
client: fake.NewSimpleClientset(),
|
|
clusterRole: makeClusterRole("test"),
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "already exist and update",
|
|
args: args{
|
|
client: fake.NewSimpleClientset(makeClusterRole("test")),
|
|
clusterRole: makeClusterRole("test"),
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "create error",
|
|
args: args{
|
|
client: func() kubernetes.Interface {
|
|
c := fake.NewSimpleClientset()
|
|
c.PrependReactor("create", "*", errorAction)
|
|
return c
|
|
}(),
|
|
clusterRole: makeClusterRole("test"),
|
|
},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "update error",
|
|
args: args{
|
|
client: func() kubernetes.Interface {
|
|
c := fake.NewSimpleClientset(makeClusterRole("test"))
|
|
c.PrependReactor("update", "*", errorAction)
|
|
return c
|
|
}(),
|
|
clusterRole: makeClusterRole("test"),
|
|
},
|
|
wantErr: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if err := CreateOrUpdateClusterRole(tt.args.client, tt.args.clusterRole); (err != nil) != tt.wantErr {
|
|
t.Errorf("CreateOrUpdateClusterRole() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestCreateOrUpdateClusterRoleBinding(t *testing.T) {
|
|
type args struct {
|
|
client kubernetes.Interface
|
|
clusterRoleBinding *rbacv1.ClusterRoleBinding
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "not exist and create",
|
|
args: args{
|
|
client: fake.NewSimpleClientset(),
|
|
clusterRoleBinding: makeClusterRoleBinding("test"),
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "already exist and update",
|
|
args: args{
|
|
client: fake.NewSimpleClientset(makeClusterRole("test")),
|
|
clusterRoleBinding: makeClusterRoleBinding("test"),
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "create error",
|
|
args: args{
|
|
client: func() kubernetes.Interface {
|
|
c := fake.NewSimpleClientset()
|
|
c.PrependReactor("create", "*", errorAction)
|
|
return c
|
|
}(),
|
|
clusterRoleBinding: makeClusterRoleBinding("test"),
|
|
},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "update error",
|
|
args: args{
|
|
client: func() kubernetes.Interface {
|
|
c := fake.NewSimpleClientset(makeClusterRoleBinding("test"))
|
|
c.PrependReactor("update", "*", errorAction)
|
|
return c
|
|
}(),
|
|
clusterRoleBinding: makeClusterRoleBinding("test"),
|
|
},
|
|
wantErr: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if err := CreateOrUpdateClusterRoleBinding(tt.args.client, tt.args.clusterRoleBinding); (err != nil) != tt.wantErr {
|
|
t.Errorf("CreateOrUpdateClusterRoleBinding() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func makeClusterRole(name string) *rbacv1.ClusterRole {
|
|
return &rbacv1.ClusterRole{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: name,
|
|
},
|
|
}
|
|
}
|
|
|
|
func makeClusterRoleBinding(name string) *rbacv1.ClusterRoleBinding {
|
|
return &rbacv1.ClusterRoleBinding{
|
|
ObjectMeta: metav1.ObjectMeta{
|
|
Name: name,
|
|
},
|
|
}
|
|
}
|