package handler import ( "testing" "time" corev1 "k8s.io/api/core/v1" networkingv1 "k8s.io/api/networking/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "github.com/stretchr/testify/assert" ) // capability_id: rainbond.resource-center.match-selector func TestLabelsMatchSelector(t *testing.T) { assert.True(t, labelsMatchSelector( map[string]string{"app": "demo"}, map[string]string{"app": "demo", "version": "v1"}, )) assert.False(t, labelsMatchSelector( map[string]string{"app": "demo", "component": "web"}, map[string]string{"app": "demo"}, )) assert.False(t, labelsMatchSelector( map[string]string{"app": "demo"}, map[string]string{"app": "other"}, )) assert.False(t, labelsMatchSelector( nil, map[string]string{"app": "demo"}, )) } // capability_id: rainbond.resource-center.collect-ingress-services func TestCollectIngressServiceNames(t *testing.T) { ingress := networkingv1.Ingress{ Spec: networkingv1.IngressSpec{ DefaultBackend: &networkingv1.IngressBackend{ Service: &networkingv1.IngressServiceBackend{Name: "default-svc"}, }, Rules: []networkingv1.IngressRule{ { IngressRuleValue: networkingv1.IngressRuleValue{ HTTP: &networkingv1.HTTPIngressRuleValue{ Paths: []networkingv1.HTTPIngressPath{ { Backend: networkingv1.IngressBackend{ Service: &networkingv1.IngressServiceBackend{Name: "api-svc"}, }, }, { Backend: networkingv1.IngressBackend{ Service: &networkingv1.IngressServiceBackend{Name: "web-svc"}, }, }, }, }, }, }, }, }, } assert.ElementsMatch(t, []string{"default-svc", "api-svc", "web-svc"}, collectIngressServiceNames(ingress)) } // capability_id: rainbond.resource-center.event-summary func TestToResourceEventInfo(t *testing.T) { lastTime := metav1.NewTime(time.Date(2026, 3, 18, 10, 0, 0, 0, time.UTC)) event := corev1.Event{ Type: "Warning", Reason: "FailedScheduling", Message: "0/3 nodes are available", Count: 2, LastTimestamp: lastTime, FirstTimestamp: lastTime, } info := toResourceEventInfo(event) assert.Equal(t, "Warning", info.Type) assert.Equal(t, "FailedScheduling", info.Reason) assert.Equal(t, "0/3 nodes are available", info.Message) assert.Equal(t, int32(2), info.Count) assert.Equal(t, "2026-03-18T10:00:00Z", info.LastTimestamp) } // capability_id: rainbond.resource-center.rfc3339-timestamps func TestFormatResourceTimestamp(t *testing.T) { timestamp := metav1.NewTime(time.Date(2026, 10, 9, 10, 45, 55, 0, time.UTC)) assert.Equal(t, "2026-10-09T10:45:55Z", formatResourceTimestamp(timestamp.Time)) assert.Empty(t, formatResourceTimestamp(time.Time{})) resource := unstructured.Unstructured{} resource.SetName("demo") resource.SetKind("ConfigMap") resource.SetAPIVersion("v1") resource.SetCreationTimestamp(timestamp) assert.Equal(t, "2026-10-09T10:45:55Z", toNsResourceInfo(resource).CreatedAt) }