mirror of
https://github.com/YuzuZensai/Minikura.git
synced 2026-09-13 18:59:25 +00:00
🧪 test: add operator reconcile coverage
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client/fake"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client/interceptor"
|
||||
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||
|
||||
v1alpha1 "github.com/YuzuZensai/Minikura/operator/api/v1alpha1"
|
||||
)
|
||||
|
||||
func testScheme(t *testing.T) *runtime.Scheme {
|
||||
t.Helper()
|
||||
s := runtime.NewScheme()
|
||||
if err := clientgoscheme.AddToScheme(s); err != nil {
|
||||
t.Fatalf("add client-go scheme: %v", err)
|
||||
}
|
||||
if err := v1alpha1.AddToScheme(s); err != nil {
|
||||
t.Fatalf("add v1alpha1 scheme: %v", err)
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func newFakeClient(t *testing.T, objs ...client.Object) client.Client {
|
||||
t.Helper()
|
||||
return newInterceptedClient(t, interceptor.Funcs{}, objs...)
|
||||
}
|
||||
|
||||
func newInterceptedClient(t *testing.T, funcs interceptor.Funcs, objs ...client.Object) client.Client {
|
||||
t.Helper()
|
||||
return fake.NewClientBuilder().
|
||||
WithScheme(testScheme(t)).
|
||||
WithStatusSubresource(
|
||||
&v1alpha1.MinecraftServer{},
|
||||
&v1alpha1.ReverseProxyServer{},
|
||||
&appsv1.Deployment{},
|
||||
&appsv1.StatefulSet{},
|
||||
&corev1.Service{},
|
||||
).
|
||||
WithObjects(objs...).
|
||||
WithInterceptorFuncs(funcs).
|
||||
Build()
|
||||
}
|
||||
|
||||
func requestFor(obj client.Object) reconcile.Request {
|
||||
return reconcile.Request{NamespacedName: types.NamespacedName{
|
||||
Name: obj.GetName(),
|
||||
Namespace: obj.GetNamespace(),
|
||||
}}
|
||||
}
|
||||
|
||||
func testMinecraft(name string, kind v1alpha1.ServerKind) *v1alpha1.MinecraftServer {
|
||||
return &v1alpha1.MinecraftServer{
|
||||
TypeMeta: metav1.TypeMeta{
|
||||
APIVersion: v1alpha1.GroupVersion.String(),
|
||||
Kind: "MinecraftServer",
|
||||
},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: name,
|
||||
Namespace: "minikura",
|
||||
UID: types.UID("uid-" + name),
|
||||
Generation: 1,
|
||||
},
|
||||
Spec: v1alpha1.MinecraftServerSpec{
|
||||
Type: kind,
|
||||
ListenPort: 25565,
|
||||
ServiceType: v1alpha1.ExposureClusterIP,
|
||||
JarType: "PAPER",
|
||||
MinecraftVersion: "1.20.4",
|
||||
StorageSize: "10Gi",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func testProxy(name string, kind v1alpha1.ProxyKind) *v1alpha1.ReverseProxyServer {
|
||||
return &v1alpha1.ReverseProxyServer{
|
||||
TypeMeta: metav1.TypeMeta{
|
||||
APIVersion: v1alpha1.GroupVersion.String(),
|
||||
Kind: "ReverseProxyServer",
|
||||
},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: name,
|
||||
Namespace: "minikura",
|
||||
UID: types.UID("uid-" + name),
|
||||
Generation: 1,
|
||||
},
|
||||
Spec: v1alpha1.ReverseProxyServerSpec{
|
||||
Type: kind,
|
||||
ExternalAddress: "play.example.com",
|
||||
ExternalPort: 25565,
|
||||
ListenPort: 25577,
|
||||
ServiceType: v1alpha1.ExposureLoadBalancer,
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user