53 lines
2.7 KiB
Go
53 lines
2.7 KiB
Go
package catalogue
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// A build is recorded by what it is; where it is pushed is composed where it is used (novox/hq
|
|
// 04-ISSUES/102).
|
|
|
|
var digest = "sha256:" + strings.Repeat("d", 64)
|
|
|
|
func TestAReferenceIsRecordedWithoutTheStoresAddress(t *testing.T) {
|
|
cases := map[string]string{
|
|
"anchor.internal:5100/gitea/server@" + digest: ArtifactStoreScheme + "gitea/server@" + digest,
|
|
"localhost:5000/gitea/server@" + digest: ArtifactStoreScheme + "gitea/server@" + digest,
|
|
"http://anchor.internal:5100/v2/gitea/config/blobs/" + digest: ArtifactStoreScheme + "gitea/config/blobs/" + digest,
|
|
ArtifactStoreScheme + "gitea/server@" + digest: ArtifactStoreScheme + "gitea/server@" + digest,
|
|
digest: digest,
|
|
"@novox/sdk@1.2.3": "@novox/sdk@1.2.3",
|
|
"gitea/gitea@" + digest: "gitea/gitea@" + digest,
|
|
"https://registry.example/v2/gitea/config/blobs/" + digest: "https://registry.example/v2/gitea/config/blobs/" + digest,
|
|
// The form a registry seat answers is recorded as it is (ADR 0605 §9).
|
|
"container-image-registry/gitea/server@" + digest: "container-image-registry/gitea/server@" + digest,
|
|
"oci-artifact-registry/gitea/config@" + digest: "oci-artifact-registry/gitea/config@" + digest,
|
|
}
|
|
for announced, want := range cases {
|
|
if got := Recorded(announced); got != want {
|
|
t.Errorf("Recorded(%q) = %q, want %q", announced, got, want)
|
|
}
|
|
}
|
|
// And every reader reads both forms: a kept reference and the seat's are fetched from the same place.
|
|
for reference, want := range map[string]string{
|
|
ArtifactStoreScheme + "gitea/server@" + digest: "10.0.0.1:5000/gitea/server@" + digest,
|
|
"container-image-registry/gitea/server@" + digest: "10.0.0.1:5000/gitea/server@" + digest,
|
|
ArtifactStoreScheme + "gitea/config/blobs/" + digest: "http://10.0.0.1:5000/v2/gitea/config/blobs/" + digest,
|
|
"oci-artifact-registry/gitea/config@" + digest: "http://10.0.0.1:5000/v2/gitea/config/blobs/" + digest,
|
|
"registry.example/gitea/server@" + digest: "registry.example/gitea/server@" + digest,
|
|
"mesh-artifact-store/gitea/server@" + digest: "mesh-artifact-store/gitea/server@" + digest,
|
|
} {
|
|
if got := Routed(reference, "10.0.0.1:5000"); got != want {
|
|
t.Errorf("Routed(%q) = %q, want %q", reference, got, want)
|
|
}
|
|
}
|
|
// A build module names what it published in the seat's form, and reads it back as the seat it came through.
|
|
for _, seat := range RegistrySeats {
|
|
ref := SeatReference(seat, "gitea", "config", digest)
|
|
if got, path, ok := InRegistrySeat(ref); !ok || got != seat || path != "gitea/config@"+digest {
|
|
t.Errorf("SeatReference(%s) = %q, read back as %q %q %v", seat, ref, got, path, ok)
|
|
}
|
|
}
|
|
}
|