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