package config import ( "os" "path/filepath" "testing" ) func TestLoadNginxDefaultPorts(t *testing.T) { t.Setenv("HAVLINE_NGINX_HTTP_PORT", "18080") t.Setenv("HAVLINE_NGINX_HTTPS_PORT", "9443") cfg := Load() if cfg.NginxDefaultHTTPPort != 18080 { t.Fatalf("http port %d", cfg.NginxDefaultHTTPPort) } if cfg.NginxDefaultHTTPSPort != 9443 { t.Fatalf("https port %d", cfg.NginxDefaultHTTPSPort) } if cfg.DefaultListenPort(false) != 18080 { t.Fatalf("default http listen %d", cfg.DefaultListenPort(false)) } if cfg.DefaultListenPort(true) != 9443 { t.Fatalf("default https listen %d", cfg.DefaultListenPort(true)) } } func TestLoadNginxDefaultPortsFallback(t *testing.T) { os.Unsetenv("HAVLINE_NGINX_HTTP_PORT") os.Unsetenv("HAVLINE_NGINX_HTTPS_PORT") cfg := Load() if cfg.NginxDefaultHTTPPort != 80 || cfg.NginxDefaultHTTPSPort != 443 { t.Fatalf("ports %d %d", cfg.NginxDefaultHTTPPort, cfg.NginxDefaultHTTPSPort) } } func TestLoadUpdaterTokenFile(t *testing.T) { t.Setenv("HAVLINE_UPDATER_TOKEN_FILE", "/tmp/havline-updater.token") cfg := Load() if cfg.UpdaterTokenFile != "/tmp/havline-updater.token" { t.Fatalf("updater token file %q", cfg.UpdaterTokenFile) } } func TestLoadListenAddrAllowsExplicitEmpty(t *testing.T) { t.Setenv("HAVLINE_LISTEN", "") cfg := Load() if cfg.ListenAddr != "" { t.Fatalf("listen addr %q, want empty for unix-socket-only mode", cfg.ListenAddr) } } func TestLoadUpdaterTokenFileAllowsExplicitEmpty(t *testing.T) { t.Setenv("HAVLINE_UPDATER_TOKEN_FILE", "") cfg := Load() if cfg.UpdaterTokenFile != "" { t.Fatalf("updater token file %q, want empty", cfg.UpdaterTokenFile) } } func TestSSHKnownHostsPathForServer(t *testing.T) { cfg := Config{DataDir: "/data"} want := filepath.Join("/data", "ssh_known_hosts", "server-3") if got := cfg.SSHKnownHostsPathForServer(3); got != want { t.Fatalf("per-server known_hosts path %q", got) } }