mirror of
https://github.com/yannh/kubeconform.git
synced 2026-02-11 14:09:21 +00:00
126 lines
3.2 KiB
Go
126 lines
3.2 KiB
Go
package config
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestSkipKindMaps(t *testing.T) {
|
|
for _, testCase := range []struct {
|
|
name string
|
|
csvSkipKinds string
|
|
expect map[string]struct{}
|
|
}{
|
|
{
|
|
"nothing to skip",
|
|
"",
|
|
map[string]struct{}{},
|
|
},
|
|
{
|
|
"a single kind to skip",
|
|
"somekind",
|
|
map[string]struct{}{
|
|
"somekind": {},
|
|
},
|
|
},
|
|
{
|
|
"multiple kinds to skip",
|
|
"somekind,anotherkind,yetsomeotherkind",
|
|
map[string]struct{}{
|
|
"somekind": {},
|
|
"anotherkind": {},
|
|
"yetsomeotherkind": {},
|
|
},
|
|
},
|
|
} {
|
|
got := splitCSV(testCase.csvSkipKinds)
|
|
if !reflect.DeepEqual(got, testCase.expect) {
|
|
t.Errorf("%s - got %+v, expected %+v", testCase.name, got, testCase.expect)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestFromFlags(t *testing.T) {
|
|
testCases := []struct {
|
|
args []string
|
|
conf Config
|
|
}{
|
|
{
|
|
[]string{},
|
|
Config{
|
|
Files: []string{},
|
|
KubernetesVersion: "master",
|
|
NumberOfWorkers: 4,
|
|
OutputFormat: "text",
|
|
SchemaLocations: nil,
|
|
SkipKinds: map[string]struct{}{},
|
|
RejectKinds: map[string]struct{}{},
|
|
},
|
|
},
|
|
{
|
|
[]string{"-h"},
|
|
Config{
|
|
Files: []string{},
|
|
Help: true,
|
|
KubernetesVersion: "master",
|
|
NumberOfWorkers: 4,
|
|
OutputFormat: "text",
|
|
SchemaLocations: nil,
|
|
SkipKinds: map[string]struct{}{},
|
|
RejectKinds: map[string]struct{}{},
|
|
},
|
|
},
|
|
{
|
|
[]string{"-skip", "a,b,c"},
|
|
Config{
|
|
Files: []string{},
|
|
KubernetesVersion: "master",
|
|
NumberOfWorkers: 4,
|
|
OutputFormat: "text",
|
|
SchemaLocations: nil,
|
|
SkipKinds: map[string]struct{}{"a": {}, "b": {}, "c": {}},
|
|
RejectKinds: map[string]struct{}{},
|
|
},
|
|
},
|
|
{
|
|
[]string{"-summary", "-verbose", "file1", "file2"},
|
|
Config{
|
|
Files: []string{"file1", "file2"},
|
|
KubernetesVersion: "master",
|
|
NumberOfWorkers: 4,
|
|
OutputFormat: "text",
|
|
SchemaLocations: nil,
|
|
SkipKinds: map[string]struct{}{},
|
|
RejectKinds: map[string]struct{}{},
|
|
Summary: true,
|
|
Verbose: true,
|
|
},
|
|
},
|
|
{
|
|
[]string{"-cache", "cache", "-ignore-missing-schemas", "-kubernetes-version", "1.16.0", "-n", "2", "-output", "json",
|
|
"-schema-location", "folder", "-schema-location", "anotherfolder", "-skip", "kinda,kindb", "-strict",
|
|
"-reject", "kindc,kindd", "-summary", "-verbose", "file1", "file2"},
|
|
Config{
|
|
Cache: "cache",
|
|
Files: []string{"file1", "file2"},
|
|
IgnoreMissingSchemas: true,
|
|
KubernetesVersion: "1.16.0",
|
|
NumberOfWorkers: 2,
|
|
OutputFormat: "json",
|
|
SchemaLocations: []string{"folder", "anotherfolder"},
|
|
SkipKinds: map[string]struct{}{"kinda": {}, "kindb": {}},
|
|
RejectKinds: map[string]struct{}{"kindc": {}, "kindd": {}},
|
|
Strict: true,
|
|
Summary: true,
|
|
Verbose: true,
|
|
},
|
|
},
|
|
}
|
|
|
|
for i, testCase := range testCases {
|
|
cfg, _, _ := FromFlags("kubeconform", testCase.args)
|
|
if reflect.DeepEqual(cfg, testCase.conf) != true {
|
|
t.Errorf("test %d: failed parsing config - expected , got: \n%+v\n%+v", i, testCase.conf, cfg)
|
|
}
|
|
}
|
|
}
|