Files

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)
}
})
}
}