builder/mirror/config_test.go
Rama main · réplica de lectura del repositorio original.
package mirror
import (
"testing"
"time"
)
// capability_id: rainbond.builder.dynamic-mirror-config
func TestLoadConfigDefaults(t *testing.T) {
cfg := LoadConfig(func(string) string { return "" })
if !cfg.Enabled {
t.Fatal("dynamic mirrors should default to enabled")
}
assertStringSlice(t, cfg.SourceURLs, []string{defaultSourceURL})
if cfg.RefreshInterval != 6*time.Hour {
t.Fatalf("default refresh interval = %v, want 6h", cfg.RefreshInterval)
}
if cfg.MaxCount != 3 {
t.Fatalf("default max count = %d, want 3", cfg.MaxCount)
}
}
func TestLoadConfigOverrides(t *testing.T) {
env := map[string]string{
"DYNAMIC_REGISTRY_MIRRORS": "false",
"MIRROR_SOURCE_URLS": "https://a.example.com/m.json, https://b.example.com/m.json,",
"MIRROR_REFRESH_INTERVAL": "30m",
"MIRROR_MAX_COUNT": "5",
}
cfg := LoadConfig(func(k string) string { return env[k] })
if cfg.Enabled {
t.Fatal("DYNAMIC_REGISTRY_MIRRORS=false should disable")
}
assertStringSlice(t, cfg.SourceURLs, []string{"https://a.example.com/m.json", "https://b.example.com/m.json"})
if cfg.RefreshInterval != 30*time.Minute {
t.Fatalf("refresh interval = %v, want 30m", cfg.RefreshInterval)
}
if cfg.MaxCount != 5 {
t.Fatalf("max count = %d, want 5", cfg.MaxCount)
}
}
func TestLoadConfigInvalidValuesFallBack(t *testing.T) {
env := map[string]string{
"MIRROR_REFRESH_INTERVAL": "soon",
"MIRROR_MAX_COUNT": "-1",
}
cfg := LoadConfig(func(k string) string { return env[k] })
if cfg.RefreshInterval != 6*time.Hour {
t.Fatalf("invalid interval should fall back to 6h, got %v", cfg.RefreshInterval)
}
if cfg.MaxCount != 3 {
t.Fatalf("invalid max count should fall back to 3, got %d", cfg.MaxCount)
}
}