Files
geoip-rest/internal/geo/resolver_test.go
2025-12-05 17:40:46 +09:00

51 lines
1.1 KiB
Go

package geo
import (
"os"
"path/filepath"
"testing"
)
func TestLookupValidIP(t *testing.T) {
dbPath := filepath.Join("..", "..", "GeoLite2-City.mmdb")
if _, err := os.Stat(dbPath); err != nil {
t.Skipf("mmdb not available at %s: %v", dbPath, err)
}
resolver, err := NewResolver(dbPath)
if err != nil {
t.Fatalf("failed to open db: %v", err)
}
defer resolver.Close()
loc, err := resolver.Lookup("1.1.1.1")
if err != nil {
t.Fatalf("lookup failed: %v", err)
}
if loc.IP != "1.1.1.1" {
t.Errorf("unexpected IP: %s", loc.IP)
}
// Ensure coordinates are populated for sanity.
if loc.Latitude == 0 && loc.Longitude == 0 {
t.Errorf("expected non-zero coordinates, got lat=%f lon=%f", loc.Latitude, loc.Longitude)
}
}
func TestLookupInvalidIP(t *testing.T) {
dbPath := filepath.Join("..", "..", "GeoLite2-City.mmdb")
if _, err := os.Stat(dbPath); err != nil {
t.Skipf("mmdb not available at %s: %v", dbPath, err)
}
resolver, err := NewResolver(dbPath)
if err != nil {
t.Fatalf("failed to open db: %v", err)
}
defer resolver.Close()
if _, err := resolver.Lookup("not-an-ip"); err == nil {
t.Fatal("expected error for invalid IP")
}
}