package imageref import ( "testing" "github.com/stretchr/testify/assert" ) func TestParse(t *testing.T) { cases := []struct { in string want Ref }{ {"postgres", Ref{Repo: "postgres"}}, {"postgres:17.10", Ref{Repo: "postgres", Tag: "17.10"}}, {"gitea/gitea:1.27.3@sha256:87a6", Ref{Repo: "gitea/gitea", Tag: "1.27.3", Digest: "sha256:87a6"}}, {"lscr.io/linuxserver/jellyfin@sha256:0f42", Ref{Repo: "lscr.io/linuxserver/jellyfin", Digest: "sha256:0f42"}}, {"localhost:5000/foo", Ref{Repo: "localhost:5000/foo"}}, {"localhost:5000/foo:v1", Ref{Repo: "localhost:5000/foo", Tag: "v1"}}, {"localhost:5000/foo:v1@sha256:ab", Ref{Repo: "localhost:5000/foo", Tag: "v1", Digest: "sha256:ab"}}, } for _, c := range cases { t.Run(c.in, func(t *testing.T) { got := Parse(c.in) assert.Equal(t, c.want, got) assert.Equal(t, c.in, got.String(), "String must round-trip") }) } } func TestIsRegistryHost(t *testing.T) { cases := []struct { in string want bool }{ {"lscr.io", true}, {"localhost:5000", true}, {"localhost", true}, {"registry:5000", true}, {"gitea", false}, {"library", false}, {"", false}, } for _, c := range cases { t.Run(c.in, func(t *testing.T) { assert.Equal(t, c.want, IsRegistryHost(c.in)) }) } }