package validation import ( goruntime "runtime" "testing" "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) { shouldPass := func(template *api.Template) { errs := ValidateTemplate(template) if len(errs) != 0 { _, _, line, _ := goruntime.Caller(1) t.Errorf("line %v: Unexpected non-zero error list: %#v", line, errs) } } shouldFail := func(template *api.Template) { if len(ValidateTemplate(template)) == 0 { _, _, line, _ := goruntime.Caller(1) t.Errorf("line %v: Expected non-zero error list", line) } } // Test empty Template, should fail on empty ID template := &api.Template{} shouldFail(template) // Set ID, should pass template.JSONBase.ID = "templateId" shouldPass(template) // Add invalid Parameter, should fail on Parameter name template.Parameters = []api.Parameter{{Name: "", Value: "1"}} shouldFail(template) // Fix Parameter name, should pass template.Parameters[0].Name = "VALID_NAME" shouldPass(template) // Add Item of unknown Kind, should pass template.Items = []runtime.EmbeddedObject{{}} shouldPass(template) }