111 lines
2.4 KiB
Go
111 lines
2.4 KiB
Go
package config
|
|
|
|
import (
|
|
"log/slog"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoadDefaults(t *testing.T) {
|
|
clearConfigEnv(t)
|
|
|
|
cfg, err := Load()
|
|
if err != nil {
|
|
t.Fatalf("Load() error = %v", err)
|
|
}
|
|
|
|
if cfg.AppEnv != "development" {
|
|
t.Fatalf("AppEnv = %q, want development", cfg.AppEnv)
|
|
}
|
|
if cfg.LogLevel != slog.LevelInfo {
|
|
t.Fatalf("LogLevel = %v, want info", cfg.LogLevel)
|
|
}
|
|
if cfg.BackendAddr != ":8080" {
|
|
t.Fatalf("BackendAddr = %q, want :8080", cfg.BackendAddr)
|
|
}
|
|
if cfg.ConsoleProxyAddr != ":8081" {
|
|
t.Fatalf("ConsoleProxyAddr = %q, want :8081", cfg.ConsoleProxyAddr)
|
|
}
|
|
if cfg.WorkerConcurrency != 5 {
|
|
t.Fatalf("WorkerConcurrency = %d, want 5", cfg.WorkerConcurrency)
|
|
}
|
|
if cfg.RedisAddr != "localhost:6379" {
|
|
t.Fatalf("RedisAddr = %q, want localhost:6379", cfg.RedisAddr)
|
|
}
|
|
}
|
|
|
|
func TestLoadOverrides(t *testing.T) {
|
|
clearConfigEnv(t)
|
|
|
|
t.Setenv("APP_ENV", "test")
|
|
t.Setenv("LOG_LEVEL", "debug")
|
|
t.Setenv("BACKEND_ADDR", ":9000")
|
|
t.Setenv("CONSOLE_PROXY_ADDR", ":9001")
|
|
t.Setenv("WORKER_CONCURRENCY", "12")
|
|
t.Setenv("REDIS_ADDR", "redis:6379")
|
|
|
|
cfg, err := Load()
|
|
if err != nil {
|
|
t.Fatalf("Load() error = %v", err)
|
|
}
|
|
|
|
if cfg.AppEnv != "test" {
|
|
t.Fatalf("AppEnv = %q, want test", cfg.AppEnv)
|
|
}
|
|
if cfg.LogLevel != slog.LevelDebug {
|
|
t.Fatalf("LogLevel = %v, want debug", cfg.LogLevel)
|
|
}
|
|
if cfg.BackendAddr != ":9000" {
|
|
t.Fatalf("BackendAddr = %q, want :9000", cfg.BackendAddr)
|
|
}
|
|
if cfg.ConsoleProxyAddr != ":9001" {
|
|
t.Fatalf("ConsoleProxyAddr = %q, want :9001", cfg.ConsoleProxyAddr)
|
|
}
|
|
if cfg.WorkerConcurrency != 12 {
|
|
t.Fatalf("WorkerConcurrency = %d, want 12", cfg.WorkerConcurrency)
|
|
}
|
|
if cfg.RedisAddr != "redis:6379" {
|
|
t.Fatalf("RedisAddr = %q, want redis:6379", cfg.RedisAddr)
|
|
}
|
|
}
|
|
|
|
func TestLoadRejectsInvalidLogLevel(t *testing.T) {
|
|
clearConfigEnv(t)
|
|
|
|
t.Setenv("LOG_LEVEL", "trace")
|
|
|
|
if _, err := Load(); err == nil {
|
|
t.Fatal("Load() error = nil, want error")
|
|
}
|
|
}
|
|
|
|
func TestLoadRejectsInvalidWorkerConcurrency(t *testing.T) {
|
|
clearConfigEnv(t)
|
|
|
|
t.Setenv("WORKER_CONCURRENCY", "0")
|
|
|
|
if _, err := Load(); err == nil {
|
|
t.Fatal("Load() error = nil, want error")
|
|
}
|
|
}
|
|
|
|
func clearConfigEnv(t *testing.T) {
|
|
t.Helper()
|
|
|
|
for _, key := range []string{
|
|
"APP_ENV",
|
|
"LOG_LEVEL",
|
|
"BACKEND_ADDR",
|
|
"CONSOLE_PROXY_ADDR",
|
|
"WORKER_CONCURRENCY",
|
|
"DATABASE_URL",
|
|
"DATABASE_DIRECT_URL",
|
|
"SUPABASE_URL",
|
|
"SUPABASE_JWKS_URL",
|
|
"SUPABASE_ISSUER",
|
|
"SUPABASE_JWT_SECRET",
|
|
"REDIS_ADDR",
|
|
} {
|
|
t.Setenv(key, "")
|
|
}
|
|
}
|