mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-30 06:16:37 +08:00
74 lines
1.8 KiB
Go
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)
|
|
}
|
|
}
|