api/handler/resource_center_test.go
Rama main · réplica de lectura del repositorio original.
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)
}