package pluginconfig import ( "reflect" "testing" "k8s.io/kubernetes/pkg/api/unversioned" oapi "github.com/openshift/origin/pkg/api" configapi "github.com/openshift/origin/pkg/cmd/server/api" "github.com/openshift/origin/pkg/cmd/server/api/latest" _ "github.com/openshift/origin/pkg/cmd/server/api/install" ) type TestConfig struct { unversioned.TypeMeta `json:",inline"` Item1 string `json:"item1"` Item2 []string `json:"item2"` } func (obj *TestConfig) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } type TestConfigV1 struct { unversioned.TypeMeta `json:",inline"` Item1 string `json:"item1"` Item2 []string `json:"item2"` } func (obj *TestConfigV1) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } func TestGetPluginConfig(t *testing.T) { configapi.Scheme.AddKnownTypes(oapi.SchemeGroupVersion, &TestConfig{}) configapi.Scheme.AddKnownTypeWithName(latest.Version.WithKind("TestConfig"), &TestConfigV1{}) testConfig := &TestConfig{ Item1: "item1value", Item2: []string{"element1", "element2"}, } cfg := configapi.AdmissionPluginConfig{ Location: "/path/to/my/config", Configuration: testConfig, } fileName, err := GetPluginConfig(cfg) if err != nil { t.Fatalf("unexpected error: %v", err) } resultConfig := &TestConfig{} if err = latest.ReadYAMLFileInto(fileName, resultConfig); err != nil { t.Fatalf("error reading config file: %v", err) } if !reflect.DeepEqual(testConfig, resultConfig) { t.Errorf("Unexpected config. Expected: %#v. Got: %#v", testConfig, resultConfig) } }