- Create modular architecture with separate packages for config, database, HTTP, logging, and state management - Implement Cobra CLI with daemon command - Set up Uber FX dependency injection - Add Chi router with health check and IP lookup endpoints - Implement GeoIP database downloader with automatic updates - Add state persistence for tracking database download times - Include comprehensive test coverage for all components - Configure structured logging with slog - Add Makefile with test, lint, and build targets - Support both IPv4 and IPv6 lookups - Return country, city, ASN, and location data in JSON format
39 lines
662 B
Go
39 lines
662 B
Go
package log
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.eeqj.de/sneak/ipapi/internal/config"
|
|
)
|
|
|
|
func TestNew(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
logLevel string
|
|
}{
|
|
{"debug level", "debug"},
|
|
{"info level", "info"},
|
|
{"warn level", "warn"},
|
|
{"warning level", "warning"},
|
|
{"error level", "error"},
|
|
{"invalid level", "invalid"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
cfg := &config.Config{
|
|
LogLevel: tt.logLevel,
|
|
}
|
|
logger := New(cfg)
|
|
if logger == nil {
|
|
t.Fatal("expected logger, got nil")
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIsTerminal(t *testing.T) {
|
|
// Just test that it doesn't panic
|
|
_ = isTerminal()
|
|
}
|