package v1_test
import (
"reflect"
"testing"
kapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util/diff"
newer "github.com/openshift/origin/pkg/image/api"
"github.com/openshift/origin/pkg/image/api/v1"
testutil "github.com/openshift/origin/test/util/api"
_ "github.com/openshift/origin/pkg/api/install"
)
func TestRoundTripVersionedObject(t *testing.T) {
d := &newer.DockerImage{
Config: &newer.DockerConfig{
Env: []string{"A=1", "B=2"},
},
}
i := &newer.Image{
ObjectMeta: kapi.ObjectMeta{Name: "foo"},
DockerImageLayers: []newer.ImageLayer{{Name: "foo", LayerSize: 10}},
DockerImageMetadata: *d,
DockerImageReference: "foo/bar/baz",
}
data, err := runtime.Encode(kapi.Codecs.LegacyCodec(v1.SchemeGroupVersion), i)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
obj, err := runtime.Decode(kapi.Codecs.UniversalDecoder(), data)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
image := obj.(*newer.Image)
if image.DockerImageMetadataVersion != "1.0" {
t.Errorf("did not default to correct metadata version: %#v", image)
}
image.DockerImageMetadataVersion = ""
if !reflect.DeepEqual(i, image) {
t.Errorf("unable to round trip object: %s", diff.ObjectDiff(i, image))
}
}
func TestFieldSelectors(t *testing.T) {
testutil.CheckFieldLabelConversions(t, "v1", "Image",
// Ensure all currently returned labels are supported
newer.ImageToSelectableFields(&newer.Image{}),
)
testutil.CheckFieldLabelConversions(t, "v1", "ImageStream",
// Ensure all currently returned labels are supported
newer.ImageStreamToSelectableFields(&newer.ImageStream{}),
// Ensure previously supported labels have conversions. DO NOT REMOVE THINGS FROM THIS LIST
"name", "spec.dockerImageRepository", "status.dockerImageRepository",
)
}
func TestImageImportSpecDefaulting(t *testing.T) {
i := &newer.ImageStreamImport{
Spec: newer.ImageStreamImportSpec{
Images: []newer.ImageImportSpec{
{From: kapi.ObjectReference{Name: "something:other"}},
},
},
}
data, err := runtime.Encode(kapi.Codecs.LegacyCodec(v1.SchemeGroupVersion), i)
if err != nil {
t.Fatal(err)
}
obj, err := runtime.Decode(kapi.Codecs.UniversalDecoder(), data)
if err != nil {
t.Fatal(err)
}
isi := obj.(*newer.ImageStreamImport)
if isi.Spec.Images[0].To == nil || isi.Spec.Images[0].To.Name != "other" {
t.Errorf("unexpected round trip: %#v", isi)
}
}