k9s/internal/client/helper_test.go

229 lines
3.5 KiB
Go

// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s
package client_test
import (
"testing"
"github.com/derailed/k9s/internal/client"
"github.com/stretchr/testify/assert"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func TestMetaFQN(t *testing.T) {
uu := map[string]struct {
meta metav1.ObjectMeta
e string
}{
"empty": {
e: "-/",
},
"full": {
meta: metav1.ObjectMeta{Name: "blee", Namespace: "ns1"},
e: "ns1/blee",
},
"no-ns": {
meta: metav1.ObjectMeta{Name: "blee"},
e: "-/blee",
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, client.MetaFQN(u.meta))
})
}
}
func TestCoFQN(t *testing.T) {
uu := map[string]struct {
meta metav1.ObjectMeta
co string
e string
}{
"empty": {
e: "-/:",
},
"full": {
meta: metav1.ObjectMeta{Name: "blee", Namespace: "ns1"},
co: "fred",
e: "ns1/blee:fred",
},
"no-co": {
meta: metav1.ObjectMeta{Name: "blee", Namespace: "ns1"},
e: "ns1/blee:",
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, client.CoFQN(u.meta, u.co))
})
}
}
func TestIsClusterScoped(t *testing.T) {
uu := map[string]struct {
ns string
e bool
}{
"empty": {},
"all": {
ns: client.NamespaceAll,
},
"none": {
ns: client.BlankNamespace,
},
"custom": {
ns: "fred",
},
"scoped": {
ns: "-",
e: true,
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, client.IsClusterScoped(u.ns))
})
}
}
func TestIsNamespaced(t *testing.T) {
uu := map[string]struct {
ns string
e bool
}{
"empty": {},
"all": {
ns: client.NamespaceAll,
},
"cluster": {
ns: client.ClusterScope,
},
"none": {
ns: client.BlankNamespace,
},
"custom": {
ns: "fred",
e: true,
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, client.IsNamespaced(u.ns))
})
}
}
func TestIsAllNamespaces(t *testing.T) {
uu := map[string]struct {
ns string
e bool
}{
"empty": {
e: true,
},
"all": {
ns: client.NamespaceAll,
e: true,
},
"none": {
ns: client.BlankNamespace,
e: true,
},
"custom": {
ns: "fred",
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, client.IsAllNamespaces(u.ns))
})
}
}
func TestIsAllNamespace(t *testing.T) {
uu := map[string]struct {
ns string
e bool
}{
"empty": {},
"all": {
ns: client.NamespaceAll,
e: true,
},
"custom": {
ns: "fred",
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, client.IsAllNamespace(u.ns))
})
}
}
func TestCleanseNamespace(t *testing.T) {
uu := map[string]struct {
ns, e string
}{
"empty": {},
"all": {
ns: client.NamespaceAll,
e: client.BlankNamespace,
},
"custom": {
ns: "fred",
e: "fred",
},
}
for k := range uu {
u := uu[k]
t.Run(k, func(t *testing.T) {
assert.Equal(t, u.e, client.CleanseNamespace(u.ns))
})
}
}
func TestNamespaced(t *testing.T) {
uu := []struct {
p, ns, n string
}{
{"fred/blee", "fred", "blee"},
{"blee", "", "blee"},
}
for _, u := range uu {
ns, n := client.Namespaced(u.p)
assert.Equal(t, u.ns, ns)
assert.Equal(t, u.n, n)
}
}
func TestFQN(t *testing.T) {
uu := []struct {
ns, n string
e string
}{
{"fred", "blee", "fred/blee"},
{"", "blee", "blee"},
}
for _, u := range uu {
assert.Equal(t, u.e, client.FQN(u.ns, u.n))
}
}