ipapi/internal/config/config_test.go
sneak 08ca75966e Fix dependency injection and implement proper CIDR checking
- Add http module for proper FX dependency injection
- Fix router to accept state manager parameter
- Implement proper CIDR-based checking for RFC1918 and documentation IPs
- Add reasonable timeouts (30s) for database downloads
- Update tests to download databases to temporary directories
- Add tests for multiple IP lookups and error cases
- All tests passing
2025-07-27 18:44:53 +02:00

66 lines
1.4 KiB
Go

package config
import (
"os"
"testing"
)
func TestNewDefaultConfig(t *testing.T) {
// Clear PORT env var for test
oldPort := os.Getenv("PORT")
os.Unsetenv("PORT")
defer os.Setenv("PORT", oldPort)
cfg := newDefaultConfig()
if cfg.Port != 8080 {
t.Errorf("expected default port 8080, got %d", cfg.Port)
}
expectedStateDir := getDefaultStateDir()
if cfg.StateDir != expectedStateDir {
t.Errorf("expected default state dir %s, got %s", expectedStateDir, cfg.StateDir)
}
if cfg.LogLevel != "info" {
t.Errorf("expected default log level info, got %s", cfg.LogLevel)
}
}
func TestGetPortFromEnv(t *testing.T) {
tests := []struct {
name string
envValue string
expected int
}{
{"no env", "", 8080},
{"valid port", "9090", 9090},
{"invalid port", "invalid", 8080},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
oldPort := os.Getenv("PORT")
if tt.envValue == "" {
os.Unsetenv("PORT")
} else {
os.Setenv("PORT", tt.envValue)
}
defer os.Setenv("PORT", oldPort)
port := getPortFromEnv()
if port != tt.expected {
t.Errorf("expected port %d, got %d", tt.expected, port)
}
})
}
}
func TestNew(t *testing.T) {
// Test with non-existent file (should use defaults)
cfg, err := New("/nonexistent/config.yml")
if err != nil {
t.Fatalf("expected no error for non-existent file, got %v", err)
}
if cfg == nil {
t.Fatal("expected config, got nil")
}
}