package config import "testing" func setRequiredEnv(t *testing.T) { t.Helper() t.Setenv("IMAP_HOST", "imap.example.com") t.Setenv("IMAP_PORT", "993") t.Setenv("IMAP_USER", "u") t.Setenv("IMAP_PASS", "p") t.Setenv("SMTP_HOST", "smtp.example.com") t.Setenv("SMTP_PORT", "587") t.Setenv("SMTP_USER", "u") t.Setenv("SMTP_PASS", "p") t.Setenv("OPENCLAW_URL", "http://openclaw.local") t.Setenv("BRIDGE_CALLBACK_TOKEN", "token") t.Setenv("SYSTEM_EMAIL", "system@example.com") t.Setenv("LISTEN_ADDR", ":8080") t.Setenv("WHITELIST_EMAILS", "") t.Setenv("IMAP_PROXY_URL", "") t.Setenv("OPENCLAW_API_KEY", "") } func TestLoad_DefaultCallbackBaseURL_WhenUnset(t *testing.T) { setRequiredEnv(t) t.Setenv("CALLBACK_BASE_URL", "") cfg, err := Load() if err != nil { t.Fatalf("load config: %v", err) } if cfg.CallbackBaseURL != "http://localhost:8080" { t.Fatalf("expected default callback base URL http://localhost:8080, got %q", cfg.CallbackBaseURL) } } func TestLoad_DefaultCallbackBaseURL_UsesListenPort(t *testing.T) { setRequiredEnv(t) t.Setenv("CALLBACK_BASE_URL", "") t.Setenv("LISTEN_ADDR", ":9090") cfg, err := Load() if err != nil { t.Fatalf("load config: %v", err) } if cfg.CallbackBaseURL != "http://localhost:9090" { t.Fatalf("expected callback base URL to follow LISTEN_ADDR port, got %q", cfg.CallbackBaseURL) } } func TestLoad_UsesCallbackBaseURL_WhenSet(t *testing.T) { setRequiredEnv(t) t.Setenv("CALLBACK_BASE_URL", "https://bridge.example.com") cfg, err := Load() if err != nil { t.Fatalf("load config: %v", err) } if cfg.CallbackBaseURL != "https://bridge.example.com" { t.Fatalf("expected callback base URL from env, got %q", cfg.CallbackBaseURL) } }