Files
OpenFlare/internal/apps/openflare/geoip/lookup_test.go
T
ryan 63cd906cfc refactor(repo): consolidate openflare-server to root and move subprojects to internal/apps
- Merge all files inside openflare-server to the repository root directory.
- Relocate agent, relay, and flared subprojects from internal/ to internal/apps/.
- Combine docker-compose files and update build context paths to root.
- Update GitHub workflows and Dockerfiles to refer to new directories and package names.
- Rewrite Go package imports across all files.
- Resolve database renew test race condition and clean up docs.
2026-06-19 14:23:29 +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.GeoIPService, 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)
}
}