package validation import ( "testing" kubeapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" "github.com/openshift/origin/pkg/template/api" ) func TestValidateParameter(t *testing.T) { var tests = []struct { ParameterName string IsValidExpected bool }{ {"VALID_NAME", true}, {"_valid_name_99", true}, {"10gen_valid_name", true}, {"", false}, {"INVALID NAME", false}, {"IVALID-NAME", false}, {">INVALID_NAME", false}, {"$INVALID_NAME", false}, {"${INVALID_NAME}", false}, } for _, test := range tests { param := &api.Parameter{Name: test.ParameterName, Value: "1"} if test.IsValidExpected && len(ValidateParameter(param)) != 0 { t.Errorf("Expected zero validation errors on valid parameter name.") } if !test.IsValidExpected && len(ValidateParameter(param)) == 0 { t.Errorf("Expected some validation errors on invalid parameter name.") } } } func TestValidateTemplate(t *testing.T) { var tests = []struct { template *api.Template isValidExpected bool }{ { // Empty Template, should fail on empty ID &api.Template{}, false, }, { // Template with ID, should pass &api.Template{ JSONBase: kubeapi.JSONBase{ID: "templateId"}, }, true, }, { // Template with invalid Parameter, should fail on Parameter name &api.Template{ JSONBase: kubeapi.JSONBase{ID: "templateId"}, Parameters: []api.Parameter{{Name: "", Value: "1"}}, }, false, }, { // Template with valid Parameter, should pass &api.Template{ JSONBase: kubeapi.JSONBase{ID: "templateId"}, Parameters: []api.Parameter{{Name: "VALID_NAME", Value: "1"}}, }, true, }, { // Template with Item of unknown Kind, should pass &api.Template{ JSONBase: kubeapi.JSONBase{ID: "templateId"}, Parameters: []api.Parameter{{Name: "VALID_NAME", Value: "1"}}, Items: []runtime.EmbeddedObject{{}}, }, true, }, } for _, test := range tests { errs := ValidateTemplate(test.template) if len(errs) != 0 && test.isValidExpected { t.Errorf("Unexpected non-empty error list: %#v", errs) } if len(errs) == 0 && !test.isValidExpected { t.Errorf("Unexpected empty error list: %#v", errs) } } }