51 lines
1.1 KiB
Go
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")
|
|
}
|
|
}
|