229 lines
3.5 KiB
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))
|
|
}
|
|
}
|