package geolocate import ( "testing" "github.com/ooni/probe-cli/v3/internal/engine/resourcesmanager" ) const ( asnDBPath = "../testdata/asn.mmdb" countryDBPath = "../testdata/country.mmdb" ipAddr = "35.204.49.125" ) func maybeFetchResources(t *testing.T) { c := &resourcesmanager.CopyWorker{DestDir: "../testdata/"} if err := c.Ensure(); err != nil { t.Fatal(err) } } func TestLookupASN(t *testing.T) { maybeFetchResources(t) asn, org, err := LookupASN(asnDBPath, ipAddr) if err != nil { t.Fatal(err) } if asn <= 0 { t.Fatal("unexpected ASN value") } if len(org) <= 0 { t.Fatal("unexpected org value") } } func TestLookupASNInvalidFile(t *testing.T) { maybeFetchResources(t) asn, org, err := LookupASN("/nonexistent", ipAddr) if err == nil { t.Fatal("expected an error here") } if asn != DefaultProbeASN { t.Fatal("expected a zero ASN") } if org != DefaultProbeNetworkName { t.Fatal("expected an empty org") } } func TestLookupASNInvalidIP(t *testing.T) { maybeFetchResources(t) asn, org, err := LookupASN(asnDBPath, "xxx") if err == nil { t.Fatal("expected an error here") } if asn != DefaultProbeASN { t.Fatal("expected a zero ASN") } if org != DefaultProbeNetworkName { t.Fatal("expected an empty org") } } func TestLookupCC(t *testing.T) { maybeFetchResources(t) cc, err := (mmdbLookupper{}).LookupCC(countryDBPath, ipAddr) if err != nil { t.Fatal(err) } if len(cc) != 2 { t.Fatal("does not seem a country code") } } func TestLookupCCInvalidFile(t *testing.T) { maybeFetchResources(t) cc, err := (mmdbLookupper{}).LookupCC("/nonexistent", ipAddr) if err == nil { t.Fatal("expected an error here") } if cc != DefaultProbeCC { t.Fatal("expected an empty cc") } } func TestLookupCCInvalidIP(t *testing.T) { maybeFetchResources(t) cc, err := (mmdbLookupper{}).LookupCC(asnDBPath, "xxx") if err == nil { t.Fatal("expected an error here") } if cc != DefaultProbeCC { t.Fatal("expected an empty cc") } }