Derive CALLBACK_BASE_URL fallback from LISTEN_ADDR so default local setup resolves to localhost:8080 and stays aligned with server bind port. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
66 lines
1.7 KiB
Go
66 lines
1.7 KiB
Go
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)
|
|
}
|
|
}
|