87 lines
2.3 KiB
Go
87 lines
2.3 KiB
Go
package oci
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/google/go-containerregistry/pkg/name"
|
|
v1 "github.com/google/go-containerregistry/pkg/v1"
|
|
"github.com/google/go-containerregistry/pkg/v1/remote"
|
|
"github.com/google/go-containerregistry/pkg/v1/remote/transport"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestGetImageDigest_Success(t *testing.T) {
|
|
expectedDigest := v1.Hash{
|
|
Hex: "1234567890abcdef",
|
|
Algorithm: "sha256",
|
|
}
|
|
|
|
c := LiveClient{
|
|
parseReference: func(string, ...name.Option) (name.Reference, error) {
|
|
return name.Tag{}, nil
|
|
},
|
|
get: func(name.Reference, ...remote.Option) (*remote.Descriptor, error) {
|
|
d := remote.Descriptor{}
|
|
d.Digest = expectedDigest
|
|
|
|
return &d, nil
|
|
},
|
|
}
|
|
|
|
digest, nameRef, err := c.GetImageDigest("test")
|
|
require.NoError(t, err)
|
|
require.Equal(t, &expectedDigest, digest)
|
|
require.Equal(t, name.Tag{}, nameRef)
|
|
}
|
|
|
|
func TestGetImageDigest_ReferenceFail(t *testing.T) {
|
|
c := LiveClient{
|
|
parseReference: func(string, ...name.Option) (name.Reference, error) {
|
|
return nil, fmt.Errorf("failed to parse reference")
|
|
},
|
|
get: func(name.Reference, ...remote.Option) (*remote.Descriptor, error) {
|
|
return nil, nil
|
|
},
|
|
}
|
|
|
|
digest, nameRef, err := c.GetImageDigest("test")
|
|
require.Error(t, err)
|
|
require.Nil(t, digest)
|
|
require.Nil(t, nameRef)
|
|
}
|
|
|
|
func TestGetImageDigest_AuthFail(t *testing.T) {
|
|
c := LiveClient{
|
|
parseReference: func(string, ...name.Option) (name.Reference, error) {
|
|
return name.Tag{}, nil
|
|
},
|
|
get: func(name.Reference, ...remote.Option) (*remote.Descriptor, error) {
|
|
return nil, &transport.Error{Errors: []transport.Diagnostic{{Code: transport.UnauthorizedErrorCode}}}
|
|
},
|
|
}
|
|
|
|
digest, nameRef, err := c.GetImageDigest("test")
|
|
require.Error(t, err)
|
|
require.ErrorIs(t, err, ErrRegistryAuthz)
|
|
require.Nil(t, digest)
|
|
require.Nil(t, nameRef)
|
|
}
|
|
|
|
func TestGetImageDigest_Denied(t *testing.T) {
|
|
c := LiveClient{
|
|
parseReference: func(string, ...name.Option) (name.Reference, error) {
|
|
return name.Tag{}, nil
|
|
},
|
|
get: func(name.Reference, ...remote.Option) (*remote.Descriptor, error) {
|
|
return nil, &transport.Error{Errors: []transport.Diagnostic{{Code: transport.DeniedErrorCode}}}
|
|
},
|
|
}
|
|
|
|
digest, nameRef, err := c.GetImageDigest("test")
|
|
require.Error(t, err)
|
|
require.ErrorIs(t, err, ErrDenied)
|
|
require.Nil(t, digest)
|
|
require.Nil(t, nameRef)
|
|
}
|