mirror of
https://tangled.org/evan.jarrett.net/at-container-registry
synced 2026-09-21 01:34:16 +00:00
135 lines
2.7 KiB
Go
135 lines
2.7 KiB
Go
package oci
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
// Tests for helper functions
|
|
|
|
func TestBlobPath_SHA256(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
digest string
|
|
expected string
|
|
}{
|
|
{
|
|
name: "standard sha256 digest",
|
|
digest: "sha256:abc123def456",
|
|
expected: "/docker/registry/v2/blobs/sha256/ab/abc123def456/data",
|
|
},
|
|
{
|
|
name: "short hash (less than 2 chars)",
|
|
digest: "sha256:a",
|
|
expected: "/docker/registry/v2/blobs/sha256/a/data",
|
|
},
|
|
{
|
|
name: "exactly 2 char hash",
|
|
digest: "sha256:ab",
|
|
expected: "/docker/registry/v2/blobs/sha256/ab/ab/data",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := blobPath(tt.digest)
|
|
if result != tt.expected {
|
|
t.Errorf("Expected %s, got %s", tt.expected, result)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBlobPath_TempUpload(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
digest string
|
|
expected string
|
|
}{
|
|
{
|
|
name: "temp upload path",
|
|
digest: "uploads/temp-uuid-123",
|
|
expected: "/docker/registry/v2/uploads/temp-uuid-123/data",
|
|
},
|
|
{
|
|
name: "temp upload with different uuid",
|
|
digest: "uploads/temp-abc-def-456",
|
|
expected: "/docker/registry/v2/uploads/temp-abc-def-456/data",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := blobPath(tt.digest)
|
|
if result != tt.expected {
|
|
t.Errorf("Expected %s, got %s", tt.expected, result)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBlobPath_MalformedDigest(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
digest string
|
|
expected string
|
|
}{
|
|
{
|
|
name: "no colon in digest",
|
|
digest: "malformed-digest",
|
|
expected: "/docker/registry/v2/blobs/malformed-digest/data",
|
|
},
|
|
{
|
|
name: "empty digest",
|
|
digest: "",
|
|
expected: "/docker/registry/v2/blobs//data",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := blobPath(tt.digest)
|
|
if result != tt.expected {
|
|
t.Errorf("Expected %s, got %s", tt.expected, result)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestNormalizeETag(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
etag string
|
|
expected string
|
|
}{
|
|
{
|
|
name: "etag without quotes",
|
|
etag: "abc123",
|
|
expected: "\"abc123\"",
|
|
},
|
|
{
|
|
name: "etag already has quotes",
|
|
etag: "\"abc123\"",
|
|
expected: "\"abc123\"",
|
|
},
|
|
{
|
|
name: "empty etag",
|
|
etag: "",
|
|
expected: "\"\"",
|
|
},
|
|
{
|
|
name: "etag with special characters",
|
|
etag: "abc-123_def",
|
|
expected: "\"abc-123_def\"",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := normalizeETag(tt.etag)
|
|
if result != tt.expected {
|
|
t.Errorf("Expected %s, got %s", tt.expected, result)
|
|
}
|
|
})
|
|
}
|
|
}
|