package config import "testing" func TestLoadDefaults(t *testing.T) { t.Setenv("APP_ENV", "") t.Setenv("HTTP_ADDR", "") t.Setenv("PROTO_SOCKET_PATH", "") t.Setenv("PROTO_SOCKET_HEARTBEAT_SEC", "") t.Setenv("PROTO_SOCKET_HEARTBEAT_WAIT_SEC", "") t.Setenv("FORGEJO_WEBHOOK_SECRET", "") cfg := Load() if cfg.AppEnv != "local" { t.Fatalf("AppEnv: got %q, want local", cfg.AppEnv) } if cfg.HTTPAddr != ":8080" { t.Fatalf("HTTPAddr: got %q, want :8080", cfg.HTTPAddr) } if cfg.ProtoSocketPath != "/proto-socket" { t.Fatalf("ProtoSocketPath: got %q, want /proto-socket", cfg.ProtoSocketPath) } if cfg.ProtoSocketHeartbeatSec != 30 { t.Fatalf("ProtoSocketHeartbeatSec: got %d, want 30", cfg.ProtoSocketHeartbeatSec) } if cfg.ProtoSocketHeartbeatWait != 10 { t.Fatalf("ProtoSocketHeartbeatWait: got %d, want 10", cfg.ProtoSocketHeartbeatWait) } if cfg.ForgejoWebhookSecret != "" { t.Fatalf("ForgejoWebhookSecret should default empty") } if !cfg.WorkerEnabled { t.Fatal("WorkerEnabled default should be true") } } func TestLoadEnvOverrides(t *testing.T) { t.Setenv("APP_ENV", "test") t.Setenv("HTTP_ADDR", ":18080") t.Setenv("PROTO_SOCKET_PATH", "/gito") t.Setenv("PROTO_SOCKET_HEARTBEAT_SEC", "5") t.Setenv("PROTO_SOCKET_HEARTBEAT_WAIT_SEC", "2") t.Setenv("FORGEJO_WEBHOOK_SECRET", "secret-ref-value") t.Setenv("WORKER_ENABLED", "false") cfg := Load() if cfg.AppEnv != "test" || cfg.HTTPAddr != ":18080" { t.Fatalf("unexpected config: %+v", cfg) } if cfg.ProtoSocketPath != "/gito" { t.Fatalf("ProtoSocketPath: got %q", cfg.ProtoSocketPath) } if cfg.ProtoSocketHeartbeatSec != 5 || cfg.ProtoSocketHeartbeatWait != 2 { t.Fatalf("unexpected proto-socket heartbeat config: %+v", cfg) } if cfg.ForgejoWebhookSecret != "secret-ref-value" { t.Fatalf("ForgejoWebhookSecret: got %q", cfg.ForgejoWebhookSecret) } if cfg.WorkerEnabled { t.Fatal("WorkerEnabled should be false") } }