package validation import ( "testing" kubeapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" errs "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" "github.com/openshift/origin/pkg/build/api" ) func TestBuildValdationSuccess(t *testing.T) { build := &api.Build{ JSONBase: kubeapi.JSONBase{ID: "buildID"}, Input: api.BuildInput{ SourceURI: "http://github.com/my/repository", ImageTag: "repository/data", }, Status: api.BuildNew, } if result := ValidateBuild(build); len(result) > 0 { t.Errorf("Unexpected validation error returned %v", result) } } func TestBuildValidationFailure(t *testing.T) { build := &api.Build{ JSONBase: kubeapi.JSONBase{ID: ""}, Input: api.BuildInput{ SourceURI: "http://github.com/my/repository", ImageTag: "repository/data", }, Status: api.BuildNew, } if result := ValidateBuild(build); len(result) != 1 { t.Errorf("Unexpected validation result: %v", result) } } func TestBuildConfigValidationSuccess(t *testing.T) { buildConfig := &api.BuildConfig{ JSONBase: kubeapi.JSONBase{ID: "configID"}, DesiredInput: api.BuildInput{ SourceURI: "http://github.com/my/repository", ImageTag: "repository/data", }, } if result := ValidateBuildConfig(buildConfig); len(result) > 0 { t.Errorf("Unexpected validation error returned %v", result) } } func TestBuildConfigValidationFailure(t *testing.T) { buildConfig := &api.BuildConfig{ JSONBase: kubeapi.JSONBase{ID: ""}, DesiredInput: api.BuildInput{ SourceURI: "http://github.com/my/repository", ImageTag: "repository/data", }, } if result := ValidateBuildConfig(buildConfig); len(result) != 1 { t.Errorf("Unexpected validation result %v", result) } } func TestValidateBuildInput(t *testing.T) { errorCases := map[string]*api.BuildInput{ string(errs.ValidationErrorTypeRequired) + "sourceURI": &api.BuildInput{ SourceURI: "", ImageTag: "repository/data", }, string(errs.ValidationErrorTypeInvalid) + "sourceURI": &api.BuildInput{ SourceURI: "::", ImageTag: "repository/data", }, string(errs.ValidationErrorTypeRequired) + "imageTag": &api.BuildInput{ SourceURI: "http://github.com/test/uri", ImageTag: "", }, string(errs.ValidationErrorTypeRequired) + "stiBuild.builderImage": &api.BuildInput{ SourceURI: "http://github.com/test/uri", ImageTag: "repository/data", STIInput: &api.STIBuildInput{ BuilderImage: "", }, }, } for desc, config := range errorCases { errors := validateBuildInput(config) if len(errors) != 1 { t.Errorf("%s: Unexpected validation result: %v", desc, errors) } err := errors[0].(errs.ValidationError) errDesc := string(err.Type) + err.Field if desc != errDesc { t.Errorf("Unexpected validation result for %s: expected %s, got %s", err.Field, desc, errDesc) } } }