package config import ( "os" "testing" ) func TestLoad_Success(t *testing.T) { os.Setenv("GITEA_URL", "https://gitea.example.com") os.Setenv("SESSION_SECRET", "test-secret-that-is-at-least-32-chars-long") os.Setenv("LISTEN_ADDR", ":9090") os.Setenv("GITEA_TOKEN", "test-token") defer func() { os.Unsetenv("GITEA_URL") os.Unsetenv("SESSION_SECRET") os.Unsetenv("LISTEN_ADDR") os.Unsetenv("GITEA_TOKEN") }() cfg, err := Load() if err != nil { t.Fatalf("unexpected error: %v", err) } if cfg.GiteaURL != "https://gitea.example.com" { t.Errorf("GiteaURL = %q, want %q", cfg.GiteaURL, "https://gitea.example.com") } if cfg.ListenAddr != ":9090" { t.Errorf("ListenAddr = %q, want %q", cfg.ListenAddr, ":9090") } if cfg.GiteaToken != "test-token" { t.Errorf("GiteaToken = %q, want %q", cfg.GiteaToken, "test-token") } } func TestLoad_DefaultListenAddr(t *testing.T) { os.Setenv("GITEA_URL", "https://gitea.example.com") os.Setenv("SESSION_SECRET", "test-secret-that-is-at-least-32-chars-long") os.Unsetenv("LISTEN_ADDR") defer func() { os.Unsetenv("GITEA_URL") os.Unsetenv("SESSION_SECRET") }() cfg, err := Load() if err != nil { t.Fatalf("unexpected error: %v", err) } if cfg.ListenAddr != ":8080" { t.Errorf("ListenAddr = %q, want %q", cfg.ListenAddr, ":8080") } } func TestLoad_MissingGiteaURL(t *testing.T) { os.Unsetenv("GITEA_URL") os.Setenv("SESSION_SECRET", "test-secret-that-is-at-least-32-chars-long") defer os.Unsetenv("SESSION_SECRET") _, err := Load() if err == nil { t.Fatal("expected error for missing GITEA_URL") } } func TestLoad_MissingSessionSecret(t *testing.T) { os.Setenv("GITEA_URL", "https://gitea.example.com") os.Unsetenv("SESSION_SECRET") defer os.Unsetenv("GITEA_URL") _, err := Load() if err == nil { t.Fatal("expected error for missing SESSION_SECRET") } } func TestLoad_ShortSessionSecret(t *testing.T) { os.Setenv("GITEA_URL", "https://gitea.example.com") os.Setenv("SESSION_SECRET", "tooshort") defer func() { os.Unsetenv("GITEA_URL") os.Unsetenv("SESSION_SECRET") }() _, err := Load() if err == nil { t.Fatal("expected error for short SESSION_SECRET") } }