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