1
0
mirror of https://github.com/openshift/image-registry.git synced 2026-02-05 09:45:55 +01:00
Files
image-registry/pkg/imagestream/image_test.go
Flavian Missi f9d93c44be pkg,test: import distribution/distribution/v3
instead of the deprecated docker/distribution
2023-06-19 12:06:47 +02:00

71 lines
2.4 KiB
Go

package imagestream
import (
"fmt"
"testing"
"github.com/distribution/distribution/v3/context"
"github.com/opencontainers/go-digest"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
core "k8s.io/client-go/testing"
imageapiv1 "github.com/openshift/api/image/v1"
imagefakeclient "github.com/openshift/client-go/image/clientset/versioned/typed/image/v1/fake"
"github.com/openshift/image-registry/pkg/dockerregistry/server/client"
"github.com/openshift/image-registry/pkg/testutil"
)
func TestCachedImageGetter(t *testing.T) {
dgst := digest.Digest("sha256:0000000000000000000000000000000000000000000000000000000000000001")
dockerImageReference := "localhost:5000/random/string"
ctx := context.Background()
ctx = testutil.WithTestLogger(ctx, t)
imageClient := &imagefakeclient.FakeImageV1{Fake: &core.Fake{}}
imageGetter := newCachedImageGetter(client.NewFakeRegistryAPIClient(nil, imageClient))
imageClient.AddReactor("get", "images", func(action core.Action) (bool, runtime.Object, error) {
return true, nil, apierrors.NewNotFound(action.GetResource().GroupResource(), action.GetResource().Resource)
})
_, err := imageGetter.Get(ctx, dgst)
if err == nil {
t.Fatal("got nil, want error")
}
imageClient.PrependReactor("get", "images", func(action core.Action) (bool, runtime.Object, error) {
if getAction, ok := action.(core.GetAction); !ok || getAction.GetName() != dgst.String() {
t.Errorf("unexpected action: %#+v", action)
return true, nil, fmt.Errorf("nope, out of luck")
}
return true, &imageapiv1.Image{
ObjectMeta: metav1.ObjectMeta{
Name: dgst.String(),
},
DockerImageReference: dockerImageReference,
}, nil
})
image, err := imageGetter.Get(ctx, dgst)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if image.Name != dgst.String() || image.DockerImageReference != dockerImageReference {
t.Fatalf("unexpected image: %v", image)
}
imageClient.PrependReactor("get", "images", func(action core.Action) (bool, runtime.Object, error) {
t.Errorf("unexpected action: %v", action)
return true, nil, fmt.Errorf("oops, cache doesn't work")
})
image, err = imageGetter.Get(ctx, dgst)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if image.Name != dgst.String() || image.DockerImageReference != dockerImageReference {
t.Fatalf("unexpected image: %v", image)
}
}