mirror of
https://github.com/projectcapsule/capsule.git
synced 2026-08-21 13:36:41 +00:00
feat: upstream enterprise preview --------- Signed-off-by: Oliver Baehler <oliver@sudo-i.net> Co-authored-by: CorentinPtrl <pitrel.corentin@gmail.com>
104 lines
2.2 KiB
Go
104 lines
2.2 KiB
Go
// Copyright 2020-2026 Project Capsule Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package gvk_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
|
|
"github.com/projectcapsule/capsule/pkg/runtime/gvk"
|
|
)
|
|
|
|
func TestKeyFromUnstructured(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
t.Run("nil object returns false", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
_, ok := gvk.KeyFromUnstructured(nil)
|
|
if ok {
|
|
t.Fatalf("expected ok=false")
|
|
}
|
|
})
|
|
|
|
t.Run("missing kind returns false", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
u := &unstructured.Unstructured{}
|
|
u.SetAPIVersion("apps/v1")
|
|
u.SetName("demo")
|
|
u.SetNamespace("default")
|
|
|
|
_, ok := gvk.KeyFromUnstructured(u)
|
|
if ok {
|
|
t.Fatalf("expected ok=false")
|
|
}
|
|
})
|
|
|
|
t.Run("missing name returns false", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
u := &unstructured.Unstructured{}
|
|
u.SetAPIVersion("apps/v1")
|
|
u.SetKind("Deployment")
|
|
u.SetNamespace("default")
|
|
|
|
_, ok := gvk.KeyFromUnstructured(u)
|
|
if ok {
|
|
t.Fatalf("expected ok=false")
|
|
}
|
|
})
|
|
|
|
t.Run("returns key for namespaced object", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
u := &unstructured.Unstructured{}
|
|
u.SetAPIVersion("apps/v1")
|
|
u.SetKind("Deployment")
|
|
u.SetNamespace("default")
|
|
u.SetName("demo")
|
|
|
|
key, ok := gvk.KeyFromUnstructured(u)
|
|
if !ok {
|
|
t.Fatalf("expected ok=true")
|
|
}
|
|
|
|
if key.Group != "apps" {
|
|
t.Fatalf("expected group=apps, got %q", key.Group)
|
|
}
|
|
if key.Version != "v1" {
|
|
t.Fatalf("expected version=v1, got %q", key.Version)
|
|
}
|
|
if key.Kind != "Deployment" {
|
|
t.Fatalf("expected kind=Deployment, got %q", key.Kind)
|
|
}
|
|
if key.Namespace != "default" {
|
|
t.Fatalf("expected namespace=default, got %q", key.Namespace)
|
|
}
|
|
if key.Name != "demo" {
|
|
t.Fatalf("expected name=demo, got %q", key.Name)
|
|
}
|
|
})
|
|
|
|
t.Run("returns key for cluster-scoped object (empty namespace)", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
u := &unstructured.Unstructured{}
|
|
u.SetAPIVersion("rbac.authorization.k8s.io/v1")
|
|
u.SetKind("ClusterRole")
|
|
// no namespace
|
|
u.SetName("admin")
|
|
|
|
key, ok := gvk.KeyFromUnstructured(u)
|
|
if !ok {
|
|
t.Fatalf("expected ok=true")
|
|
}
|
|
|
|
if key.Namespace != "" {
|
|
t.Fatalf("expected empty namespace, got %q", key.Namespace)
|
|
}
|
|
})
|
|
}
|