46 lines
1.5 KiB
Go
46 lines
1.5 KiB
Go
package artifacts
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestS3KeyConstruction(t *testing.T) {
|
|
runID := "20260515T031522Z-a1b2c3d4"
|
|
sessionPrefix := S3SessionPrefix("dnd", "forsaken", "2026-04-19")
|
|
if sessionPrefix != "dnd/campaigns/forsaken/sessions/2026-04-19/" {
|
|
t.Fatalf("sessionPrefix = %q", sessionPrefix)
|
|
}
|
|
|
|
audioPrefix := S3AudioPrefix(sessionPrefix, "audio/")
|
|
if audioPrefix != "dnd/campaigns/forsaken/sessions/2026-04-19/audio/" {
|
|
t.Fatalf("audioPrefix = %q", audioPrefix)
|
|
}
|
|
|
|
runPrefix := S3RunPrefix(sessionPrefix, runID)
|
|
wantRunPrefix := "dnd/campaigns/forsaken/sessions/2026-04-19/runs/" + runID + "/"
|
|
if runPrefix != wantRunPrefix {
|
|
t.Fatalf("runPrefix = %q, want %q", runPrefix, wantRunPrefix)
|
|
}
|
|
|
|
runPointer := S3CurrentRunPointerKey(sessionPrefix)
|
|
if runPointer != "dnd/campaigns/forsaken/sessions/2026-04-19/current/run_id.txt" {
|
|
t.Fatalf("run pointer key = %q", runPointer)
|
|
}
|
|
|
|
manifestKey := S3CurrentManifestKey(sessionPrefix)
|
|
if manifestKey != "dnd/campaigns/forsaken/sessions/2026-04-19/current/manifest.json" {
|
|
t.Fatalf("manifest key = %q", manifestKey)
|
|
}
|
|
|
|
promoted := S3PromotedArtifactKey(sessionPrefix, "transcripts/trimmed.json")
|
|
if promoted != "dnd/campaigns/forsaken/sessions/2026-04-19/transcripts/trimmed.json" {
|
|
t.Fatalf("promoted key = %q", promoted)
|
|
}
|
|
|
|
runRelative := S3RunRelativeDestinationKey(runPrefix, `logs\whisperx.stdout.log`)
|
|
if !strings.HasSuffix(runRelative, "/logs/whisperx.stdout.log") {
|
|
t.Fatalf("runRelative key = %q, want normalized forward slashes", runRelative)
|
|
}
|
|
}
|