ipapi/internal/http/server_test.go
sneak 2a1710cca8 Implement IP API daemon with GeoIP database support
- 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
2025-07-27 18:15:38 +02:00

65 lines
1.1 KiB
Go

package http
import (
"context"
"log/slog"
"testing"
"git.eeqj.de/sneak/ipapi/internal/config"
"github.com/go-chi/chi/v5"
)
func TestNewServer(t *testing.T) {
cfg := &config.Config{
Port: 8080,
}
logger := slog.Default()
router := chi.NewRouter()
server, err := NewServer(cfg, logger, router)
if err != nil {
t.Fatalf("failed to create server: %v", err)
}
if server == nil {
t.Fatal("expected server, got nil")
}
if server.config != cfg {
t.Error("config not set correctly")
}
if server.logger != logger {
t.Error("logger not set correctly")
}
if server.router != router {
t.Error("router not set correctly")
}
}
func TestServerStartStop(t *testing.T) {
cfg := &config.Config{
Port: 0, // Use random port
}
logger := slog.Default()
router := chi.NewRouter()
server, err := NewServer(cfg, logger, router)
if err != nil {
t.Fatalf("failed to create server: %v", err)
}
ctx := context.Background()
// Start server
if err := server.Start(ctx); err != nil {
t.Fatalf("failed to start server: %v", err)
}
// Stop server
if err := server.Stop(ctx); err != nil {
t.Fatalf("failed to stop server: %v", err)
}
}