package validation import ( "testing" kubeapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api" "github.com/openshift/origin/pkg/build/api" ) func TestBuildValdationSuccess(t *testing.T) { build := &api.Build{ JSONBase: kubeapi.JSONBase{ID: "buildId"}, Input: api.BuildInput{ Type: api.DockerBuildType, 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{ Type: api.DockerBuildType, 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{ Type: api.DockerBuildType, 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{ Type: api.DockerBuildType, 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{ "No source URI": &api.BuildInput{ Type: api.DockerBuildType, SourceURI: "", ImageTag: "repository/data", }, "Invalid source URI": &api.BuildInput{ Type: api.DockerBuildType, SourceURI: "::", ImageTag: "repository/data", }, "No image tag": &api.BuildInput{ Type: api.DockerBuildType, SourceURI: "http://github.com/test/uri", ImageTag: "", }, "No builder image with STIBuildType": &api.BuildInput{ Type: api.STIBuildType, SourceURI: "http://github.com/test/uri", ImageTag: "repository/data", BuilderImage: "", }, "Builder image with DockerBuildType": &api.BuildInput{ Type: api.DockerBuildType, SourceURI: "http://github.com/test/uri", ImageTag: "repository/data", BuilderImage: "builder/image", }, } for desc, config := range errorCases { errors := validateBuildInput(config) if len(errors) != 1 { t.Errorf("%s: Unexpected validation result: %v", desc, errors) } // TODO: Verify we got the right type of validation error. } }