Files
package-updater/internal/imageref/imageref_test.go
T
shcizo 061243f5da feat(store): drift state, move candidates and service merge (#10)
Adds services.awaiting_inventory, Service.Drifted/RunsRef/RunningRef, AcceptRunning, MoveCandidates, MergeSources and MergeService, and maps a job for a deleted service to ErrNotFound.
2026-10-13 10:28:34 +02:00

47 lines
1.3 KiB
Go

package imageref
import (
"strings"
"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 TestIsDigest(t *testing.T) {
cases := []struct {
in string
want bool
}{
{"sha256:" + strings.Repeat("a", 64), true},
{"sha256:" + strings.Repeat("a", 63), false},
{"sha256:" + strings.Repeat("A", 64), false},
{"sha512:" + strings.Repeat("a", 64), false},
{"", false},
}
for _, c := range cases {
assert.Equal(t, c.want, IsDigest(c.in), c.in)
}
}