package validation
import (
"testing"
kubeapi "github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors"
"github.com/openshift/origin/pkg/image/api"
)
func TestValidateImageOK(t *testing.T) {
errs := ValidateImage(&api.Image{
JSONBase: kubeapi.JSONBase{ID: "foo"},
DockerImageReference: "openshift/ruby-19-centos",
})
if len(errs) > 0 {
t.Errorf("Unexpected non-empty error list: %#v", errs)
}
}
func TestValidateImageMissingFields(t *testing.T) {
errorCases := map[string]struct {
I api.Image
T errors.ValidationErrorType
F string
}{
"missing ID": {api.Image{DockerImageReference: "ref"}, errors.ValidationErrorTypeRequired, "ID"},
"missing DockerImageReference": {api.Image{JSONBase: kubeapi.JSONBase{ID: "foo"}}, errors.ValidationErrorTypeRequired, "DockerImageReference"},
}
for k, v := range errorCases {
errs := ValidateImage(&v.I)
if len(errs) == 0 {
t.Errorf("Expected failure for %s", k)
continue
}
for i := range errs {
if errs[i].(errors.ValidationError).Type != v.T {
t.Errorf("%s: expected errors to have type %s: %v", k, v.T, errs[i])
}
if errs[i].(errors.ValidationError).Field != v.F {
t.Errorf("%s: expected errors to have field %s: %v", k, v.F, errs[i])
}
}
}
}
func TestValidateImageRepositoryMappingNotOK(t *testing.T) {
errorCases := map[string]struct {
I api.ImageRepositoryMapping
T errors.ValidationErrorType
F string
}{
"missing DockerImageRepository": {
api.ImageRepositoryMapping{
Tag: "latest",
Image: api.Image{
JSONBase: kubeapi.JSONBase{
ID: "foo",
},
DockerImageReference: "openshift/ruby-19-centos",
},
},
errors.ValidationErrorTypeRequired,
"DockerImageRepository",
},
"missing Tag": {
api.ImageRepositoryMapping{
DockerImageRepository: "openshift/ruby-19-centos",
Image: api.Image{
JSONBase: kubeapi.JSONBase{
ID: "foo",
},
DockerImageReference: "openshift/ruby-19-centos",
},
},
errors.ValidationErrorTypeRequired,
"Tag",
},
"missing image attributes": {
api.ImageRepositoryMapping{
Tag: "latest",
DockerImageRepository: "openshift/ruby-19-centos",
Image: api.Image{
DockerImageReference: "openshift/ruby-19-centos",
},
},
errors.ValidationErrorTypeRequired,
"image.ID",
},
}
for k, v := range errorCases {
errs := ValidateImageRepositoryMapping(&v.I)
if len(errs) == 0 {
t.Errorf("Expected failure for %s", k)
continue
}
for i := range errs {
if errs[i].(errors.ValidationError).Type != v.T {
t.Errorf("%s: expected errors to have type %s: %v", k, v.T, errs[i])
}
if errs[i].(errors.ValidationError).Field != v.F {
t.Errorf("%s: expected errors to have field %s: %v", k, v.F, errs[i])
}
}
}
}