build source
This commit is contained in:
commit
ee1fec43ed
4171 changed files with 1351288 additions and 0 deletions
87
internal/k8s/namespace_test.go
Normal file
87
internal/k8s/namespace_test.go
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
package k8s
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
fakedynamic "k8s.io/client-go/dynamic/fake"
|
||||
"k8s.io/client-go/kubernetes/fake"
|
||||
)
|
||||
|
||||
func TestEnsureNamespace(t *testing.T) {
|
||||
t.Run("creates_new_namespace", func(t *testing.T) {
|
||||
client := NewClientWithClientset(fake.NewSimpleClientset(), fakedynamic.NewSimpleDynamicClient(runtime.NewScheme()), testCfg)
|
||||
ctx := context.Background()
|
||||
|
||||
err := client.EnsureNamespace(ctx, "alice")
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
ns, err := client.Clientset.CoreV1().Namespaces().Get(ctx, "dev-alice", metav1.GetOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("failed to get namespace: %v", err)
|
||||
}
|
||||
if ns.Name != "dev-alice" {
|
||||
t.Errorf("expected namespace dev-alice, got %s", ns.Name)
|
||||
}
|
||||
if ns.Labels["app"] != "dev-pod" {
|
||||
t.Errorf("expected label app=dev-pod, got %s", ns.Labels["app"])
|
||||
}
|
||||
if ns.Labels["managed-by"] != "dev-pod-api" {
|
||||
t.Errorf("expected label managed-by=dev-pod-api, got %s", ns.Labels["managed-by"])
|
||||
}
|
||||
if ns.Labels["user"] != "alice" {
|
||||
t.Errorf("expected label user=alice, got %s", ns.Labels["user"])
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("idempotent_on_existing_namespace", func(t *testing.T) {
|
||||
client := NewClientWithClientset(fake.NewSimpleClientset(), fakedynamic.NewSimpleDynamicClient(runtime.NewScheme()), testCfg)
|
||||
ctx := context.Background()
|
||||
|
||||
// Create twice - second call should not error
|
||||
err := client.EnsureNamespace(ctx, "bob")
|
||||
if err != nil {
|
||||
t.Fatalf("first create failed: %v", err)
|
||||
}
|
||||
err = client.EnsureNamespace(ctx, "bob")
|
||||
if err != nil {
|
||||
t.Fatalf("second create should be idempotent, got: %v", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestDeleteNamespace(t *testing.T) {
|
||||
t.Run("deletes_existing_namespace", func(t *testing.T) {
|
||||
client := NewClientWithClientset(fake.NewSimpleClientset(), fakedynamic.NewSimpleDynamicClient(runtime.NewScheme()), testCfg)
|
||||
ctx := context.Background()
|
||||
|
||||
err := client.EnsureNamespace(ctx, "alice")
|
||||
if err != nil {
|
||||
t.Fatalf("setup failed: %v", err)
|
||||
}
|
||||
|
||||
err = client.DeleteNamespace(ctx, "alice")
|
||||
if err != nil {
|
||||
t.Fatalf("delete failed: %v", err)
|
||||
}
|
||||
|
||||
_, err = client.Clientset.CoreV1().Namespaces().Get(ctx, "dev-alice", metav1.GetOptions{})
|
||||
if err == nil {
|
||||
t.Error("expected namespace to be deleted")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("no_error_on_nonexistent_namespace", func(t *testing.T) {
|
||||
client := NewClientWithClientset(fake.NewSimpleClientset(), fakedynamic.NewSimpleDynamicClient(runtime.NewScheme()), testCfg)
|
||||
ctx := context.Background()
|
||||
|
||||
err := client.DeleteNamespace(ctx, "nonexistent")
|
||||
if err != nil {
|
||||
t.Fatalf("expected no error for nonexistent namespace, got: %v", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue