internal/checks/fixtures_test.go
Rama main · réplica de lectura del repositorio original.
package checks
import (
"maps"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
)
const testNamespace = "apps"
func metadata(name string) map[string]any {
return map[string]any{"name": name, "namespace": testNamespace}
}
func container(name string, fields map[string]any) map[string]any {
out := map[string]any{"name": name, "image": "registry.example/app:1.4.2"}
maps.Copy(out, fields)
return out
}
func podSpec(containers ...map[string]any) map[string]any {
listed := make([]any, 0, len(containers))
for _, entry := range containers {
listed = append(listed, entry)
}
return map[string]any{"containers": listed}
}
func pod(name string, spec map[string]any) *unstructured.Unstructured {
return &unstructured.Unstructured{Object: map[string]any{
"apiVersion": "v1",
"kind": "Pod",
"metadata": metadata(name),
"spec": spec,
}}
}
func workload(kind, name string, spec map[string]any) *unstructured.Unstructured {
version := "apps/v1"
if kindGroups[kind] == "batch" {
version = "batch/v1"
}
return &unstructured.Unstructured{Object: map[string]any{
"apiVersion": version,
"kind": kind,
"metadata": metadata(name),
"spec": map[string]any{
"selector": map[string]any{"matchLabels": map[string]any{"app": name}},
"template": map[string]any{"spec": spec},
},
}}
}
func deployment(name string, spec map[string]any) *unstructured.Unstructured {
return workload("Deployment", name, spec)
}
func cronJob(name string, spec map[string]any) *unstructured.Unstructured {
return &unstructured.Unstructured{Object: map[string]any{
"apiVersion": "batch/v1",
"kind": "CronJob",
"metadata": metadata(name),
"spec": map[string]any{
"jobTemplate": map[string]any{
"spec": map[string]any{"template": map[string]any{"spec": spec}},
},
},
}}
}
func specOf(obj *unstructured.Unstructured) map[string]any {
spec, ok := obj.Object["spec"].(map[string]any)
if !ok {
return map[string]any{}
}
return spec
}
func replicas(obj *unstructured.Unstructured, count int64) *unstructured.Unstructured {
specOf(obj)["replicas"] = count
return obj
}
func apiVersionFor(kind string) string {
group := kindGroups[kind]
if group == "" {
return "v1"
}
return group + "/v1"
}
func ownedBy(obj *unstructured.Unstructured, kind, name string) *unstructured.Unstructured {
obj.SetOwnerReferences([]metav1.OwnerReference{{
APIVersion: apiVersionFor(kind),
Kind: kind,
Name: name,
}})
return obj
}
func onNode(obj *unstructured.Unstructured, node string) *unstructured.Unstructured {
specOf(obj)["nodeName"] = node
return obj
}
func withSecurity(fields map[string]any) map[string]any {
return map[string]any{"securityContext": fields}
}
func resources(section string, values map[string]any) map[string]any {
return map[string]any{"resources": map[string]any{section: values}}
}
func requestsAndLimits(request, limit map[string]any) map[string]any {
return map[string]any{"resources": map[string]any{"requests": request, "limits": limit}}
}