package depot import ( "testing" "time" ) func TestLoadConfigDefaults(t *testing.T) { getenv := func(key string) string { return "" } cfg := LoadConfig(getenv) if cfg.CDNBase != "https://cdn-a7f3k9.westgate.pw" { t.Errorf("CDNBase: got %q, want %q", cfg.CDNBase, "https://cdn-a7f3k9.westgate.pw") } if cfg.StorageZone != "sow-assets-depot" { t.Errorf("StorageZone: got %q, want %q", cfg.StorageZone, "sow-assets-depot") } if cfg.ProbeJobs != 16 { t.Errorf("ProbeJobs: got %d, want 16", cfg.ProbeJobs) } if cfg.Jobs != 16 { t.Errorf("Jobs: got %d, want 16", cfg.Jobs) } if cfg.ConnectTimeout != 10*time.Second { t.Errorf("ConnectTimeout: got %v, want 10s", cfg.ConnectTimeout) } if cfg.ProbeMaxTime != 30*time.Second { t.Errorf("ProbeMaxTime: got %v, want 30s", cfg.ProbeMaxTime) } if cfg.ConfirmRetries != 3 { t.Errorf("ConfirmRetries: got %d, want 3", cfg.ConfirmRetries) } if cfg.ConfirmMax != 200 { t.Errorf("ConfirmMax: got %d, want 200", cfg.ConfirmMax) } } func TestLoadConfigReadKeyFallback(t *testing.T) { // When READ unset, falls back to WriteKey getenv := func(key string) string { if key == "BUNNY_STORAGE_PASSWORD" { return "write-key" } return "" } cfg := LoadConfig(getenv) if cfg.ReadKey != "write-key" { t.Errorf("ReadKey fallback: got %q, want %q", cfg.ReadKey, "write-key") } if cfg.WriteKey != "write-key" { t.Errorf("WriteKey: got %q, want %q", cfg.WriteKey, "write-key") } // When READ is set, uses its own value getenv = func(key string) string { if key == "BUNNY_STORAGE_READ_PASSWORD" { return "read-key" } if key == "BUNNY_STORAGE_PASSWORD" { return "write-key" } return "" } cfg = LoadConfig(getenv) if cfg.ReadKey != "read-key" { t.Errorf("ReadKey explicit: got %q, want %q", cfg.ReadKey, "read-key") } if cfg.WriteKey != "write-key" { t.Errorf("WriteKey: got %q, want %q", cfg.WriteKey, "write-key") } } func TestLoadConfigBadIntFallsBack(t *testing.T) { getenv := func(key string) string { if key == "DEPOT_PROBE_JOBS" { return "not-a-number" } if key == "DEPOT_JOBS" { return "invalid" } if key == "DEPOT_CONNECT_TIMEOUT" { return "bad" } if key == "DEPOT_PROBE_MAX_TIME" { return "wrong" } if key == "DEPOT_CONFIRM_RETRIES" { return "nope" } if key == "DEPOT_CONFIRM_MAX" { return "nah" } return "" } cfg := LoadConfig(getenv) if cfg.ProbeJobs != 16 { t.Errorf("ProbeJobs fallback: got %d, want 16", cfg.ProbeJobs) } if cfg.Jobs != 16 { t.Errorf("Jobs fallback: got %d, want 16", cfg.Jobs) } if cfg.ConnectTimeout != 10*time.Second { t.Errorf("ConnectTimeout fallback: got %v, want 10s", cfg.ConnectTimeout) } if cfg.ProbeMaxTime != 30*time.Second { t.Errorf("ProbeMaxTime fallback: got %v, want 30s", cfg.ProbeMaxTime) } if cfg.ConfirmRetries != 3 { t.Errorf("ConfirmRetries fallback: got %d, want 3", cfg.ConfirmRetries) } if cfg.ConfirmMax != 200 { t.Errorf("ConfirmMax fallback: got %d, want 200", cfg.ConfirmMax) } }