Files
k8s-cilium-node-label/internal/kube_test.go

74 lines
1.7 KiB
Go

package internal
import (
"context"
"testing"
coordv1 "k8s.io/api/coordination/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/fake"
)
func TestGetNodeNameFromLease_Valid(t *testing.T) {
l := coordv1.Lease{}
l.Name = "cilium-l2announce-1"
hi := "aa-bb-node1"
l.Spec.HolderIdentity = &hi
node, err := GetNodeNameFromLease(l)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if node != "node1" {
t.Fatalf("unexpected node name: got %s", node)
}
}
func TestGetNodeNameFromLease_Invalid(t *testing.T) {
l := coordv1.Lease{}
l.Name = "cilium-l2announce-2"
hi := "too-short"
l.Spec.HolderIdentity = &hi
_, err := GetNodeNameFromLease(l)
if err == nil {
t.Fatalf("expected error for invalid holder identity")
}
}
func TestApplyLabelToNode_WithFakeClient(t *testing.T) {
client := fake.NewSimpleClientset()
node := &corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "test-node",
Labels: map[string]string{},
},
}
_, err := client.CoreV1().Nodes().Create(context.TODO(), node, metav1.CreateOptions{})
if err != nil {
t.Fatalf("failed to create fake node: %v", err)
}
cfg := &Config{CiliumLabel: "mylabel", DryRun: false}
err = ApplyLabelToNode(client, "test-node", "lease-1", cfg)
if err != nil {
t.Fatalf("ApplyLabelToNode failed: %v", err)
}
updated, err := client.CoreV1().Nodes().Get(context.TODO(), "test-node", metav1.GetOptions{})
if err != nil {
t.Fatalf("failed to get node: %v", err)
}
if updated.Labels["mylabel"] != "true" {
t.Fatalf("expected label set on node, got: %v", updated.Labels)
}
if updated.Labels["cilium.uploadfilter24.eu/lease"] != "lease-1" {
t.Fatalf("expected lease label set on node, got: %v", updated.Labels)
}
}