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)
}