42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package geo
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
ipdata "speedtest/data"
|
|
)
|
|
|
|
func TestClientInfoFromIP2RegionParsesRegionFields(t *testing.T) {
|
|
info := clientInfoFromIP2Region("39.181.21.1", "中国|浙江省|杭州市|移动|CN")
|
|
|
|
if info.Country != "中国" || info.Region != "浙江省" || info.City != "杭州市" {
|
|
t.Fatalf("location info = %#v, want parsed country/region/city", info)
|
|
}
|
|
if info.ISP != "移动" {
|
|
t.Fatalf("ISP = %q, want 移动", info.ISP)
|
|
}
|
|
if info.ASN != "" {
|
|
t.Fatalf("ASN = %q, want empty because ip2region field 5 is country code", info.ASN)
|
|
}
|
|
}
|
|
|
|
func TestEmbeddedXDBResolverReturnsISP(t *testing.T) {
|
|
db, err := ipdata.FileSystem().ReadFile("ip2region_v4.xdb")
|
|
if err != nil {
|
|
t.Fatalf("read embedded xdb: %v", err)
|
|
}
|
|
resolver, err := NewXDBResolver(db)
|
|
if err != nil {
|
|
t.Fatalf("NewXDBResolver: %v", err)
|
|
}
|
|
|
|
info, err := resolver.Resolve(context.Background(), "39.181.21.1")
|
|
if err != nil {
|
|
t.Fatalf("Resolve returned error: %v", err)
|
|
}
|
|
if info.IP != "39.181.21.1" || info.ISP == "" {
|
|
t.Fatalf("info = %#v, want ip and ISP from embedded xdb", info)
|
|
}
|
|
}
|