Files
OpenFlare/internal/apps/openflare/geoip/lookup_test.go
T
2026-06-19 17:20:39 +08:00

74 lines
1.8 KiB
Go

// Copyright 2026 Arctel.net
// SPDX-License-Identifier: Apache-2.0
package geoip
import (
"net"
"testing"
pkggeoip "github.com/Rain-kl/Wavelet/pkg/geoip"
)
type fakeLookupProvider struct{}
func (f *fakeLookupProvider) Name() string { return "fake-lookup" }
func (f *fakeLookupProvider) GetGeoInfo(_ net.IP) (*pkggeoip.GeoInfo, error) {
lat := 37.7749
lon := -122.4194
return &pkggeoip.GeoInfo{
ISOCode: "US",
Name: "United States",
Latitude: &lat,
Longitude: &lon,
}, nil
}
func (f *fakeLookupProvider) UpdateDatabase() error { return nil }
func (f *fakeLookupProvider) Close() error { return nil }
func TestLookupWithProvider(t *testing.T) {
previousFactory := pkggeoip.ProviderFactoryForTest()
pkggeoip.SetProviderFactoryForTest(func(provider string) (pkggeoip.Service, error) {
return &fakeLookupProvider{}, nil
})
t.Cleanup(func() {
pkggeoip.SetProviderFactoryForTest(previousFactory)
})
view, err := Lookup("ipinfo", "8.8.8.8")
if err != nil {
t.Fatalf("Lookup() error = %v", err)
}
if view.Provider != "ipinfo" || view.IP != "8.8.8.8" {
t.Fatalf("unexpected lookup view: %+v", view)
}
if view.ISOCode != "US" || view.Name != "United States" {
t.Fatalf("unexpected geo fields: %+v", view)
}
if view.Latitude == nil || view.Longitude == nil {
t.Fatalf("expected coordinates, got %+v", view)
}
}
func TestLookupRejectsInvalidInput(t *testing.T) {
if _, err := Lookup("invalid", "8.8.8.8"); err == nil {
t.Fatal("expected invalid provider to fail")
}
if _, err := Lookup("ipinfo", "not-an-ip"); err == nil {
t.Fatal("expected invalid IP to fail")
}
}
func TestLookupDisabledProvider(t *testing.T) {
view, err := Lookup("disabled", "8.8.8.8")
if err != nil {
t.Fatalf("Lookup() error = %v", err)
}
if view.Provider != "disabled" || view.IP != "8.8.8.8" {
t.Fatalf("unexpected disabled view: %+v", view)
}
}