karmada/pkg/util/apigroup_test.go

194 lines
3.8 KiB
Go

package util
import (
"testing"
"k8s.io/apimachinery/pkg/runtime/schema"
)
func TestSkippedResourceConfigGVKParse(t *testing.T) {
tests := []struct {
input string
out []schema.GroupVersionKind
}{
{input: "v1/Node,Pod;networking.k8s.io/v1beta1/Ingress,IngressClass", out: []schema.GroupVersionKind{
{
Group: "",
Version: "v1",
Kind: "Node",
},
{
Group: "",
Version: "v1",
Kind: "Pod",
},
{
Group: "networking.k8s.io",
Version: "v1beta1",
Kind: "Ingress",
},
{
Group: "networking.k8s.io",
Version: "v1beta1",
Kind: "IngressClass",
},
}},
}
for _, test := range tests {
r := NewSkippedResourceConfig()
r.Parse(test.input)
for i, o := range test.out {
ok := r.GroupVersionKindDisabled(o)
if !ok {
t.Errorf("%d: unexpected error: %v", i, o)
}
}
}
}
func TestResourceConfigGVParse(t *testing.T) {
tests := []struct {
input string
out []schema.GroupVersion
}{
{input: "networking.k8s.io/v1;test/v1beta1", out: []schema.GroupVersion{
{
Group: "networking.k8s.io",
Version: "v1",
},
{
Group: "networking.k8s.io",
Version: "v1",
},
{
Group: "test",
Version: "v1beta1",
},
{
Group: "test",
Version: "v1beta1",
},
}},
}
for _, test := range tests {
r := NewSkippedResourceConfig()
r.Parse(test.input)
for i, o := range test.out {
ok := r.GroupVersionDisabled(o)
if !ok {
t.Errorf("%d: unexpected error: %v", i, o)
}
}
}
}
func TestSkippedResourceConfigGroupParse(t *testing.T) {
tests := []struct {
input string
out []string
}{
{input: "networking.k8s.io;test", out: []string{
"networking.k8s.io", "test",
}},
}
for _, test := range tests {
r := NewSkippedResourceConfig()
r.Parse(test.input)
for i, o := range test.out {
ok := r.GroupDisabled(o)
if !ok {
t.Errorf("%d: unexpected error: %v", i, o)
}
}
}
}
func TestSkippedResourceConfigMixedParse(t *testing.T) {
tests := []struct {
input string
out SkippedResourceConfig
}{
{input: "v1/Node,Pod;networking.k8s.io/v1beta1/Ingress,IngressClass;networking.k8s.io;test.com/v1", out: SkippedResourceConfig{
Groups: map[string]struct{}{
"networking.k8s.io": {},
},
GroupVersions: map[schema.GroupVersion]struct{}{
{
Group: "test.com",
Version: "v1",
}: {},
},
GroupVersionKinds: map[schema.GroupVersionKind]struct{}{
{
Group: "",
Version: "v1",
Kind: "Node",
}: {},
{
Group: "",
Version: "v1",
Kind: "Pod",
}: {},
{
Group: "networking.k8s.io",
Version: "v1beta1",
Kind: "Ingress",
}: {},
{
Group: "networking.k8s.io",
Version: "v1beta1",
Kind: "IngressClass",
}: {},
},
}},
}
for i, test := range tests {
r := NewSkippedResourceConfig()
r.Parse(test.input)
for g := range r.Groups {
ok := r.GroupDisabled(g)
if !ok {
t.Errorf("%d: unexpected error: %v", i, g)
}
}
for gv := range r.GroupVersions {
ok := r.GroupVersionDisabled(gv)
if !ok {
t.Errorf("%d: unexpected error: %v", i, gv)
}
}
for gvk := range r.GroupVersionKinds {
ok := r.GroupVersionKindDisabled(gvk)
if !ok {
t.Errorf("%d: unexpected error: %v", i, gvk)
}
}
}
}
func TestDefaultSkippedResourceConfigGroupParse(t *testing.T) {
tests := []struct {
input string
out []string
}{
{input: "", out: []string{
"cluster.karmada.io", "policy.karmada.io", "work.karmada.io",
}},
}
for _, test := range tests {
r := NewSkippedResourceConfig()
r.Parse(test.input)
for i, o := range test.out {
ok := r.GroupDisabled(o)
if !ok {
t.Errorf("%d: unexpected error: %v", i, o)
}
}
ok := r.GroupDisabled("")
if ok {
t.Error("unexpected error: v1")
}
}
}