mirror of
https://github.com/netbirdio/netbird.git
synced 2024-12-16 11:51:30 +01:00
12c36312b5
introduces helper functions to fetch and verify database versions, downloads new files if outdated, and deletes old ones. It also refactors filename handling to improve clarity and consistency, adding options to disable auto-updating via a flag. The changes aim to simplify GeoLite database management for admins.
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package geolocation
|
|
|
|
import (
|
|
"net"
|
|
"path"
|
|
"path/filepath"
|
|
"sync"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/netbirdio/netbird/util"
|
|
)
|
|
|
|
// from https://github.com/maxmind/MaxMind-DB/blob/main/test-data/GeoLite2-City-Test.mmdb
|
|
var mmdbPath = "../testdata/GeoLite2-City_20240305.mmdb"
|
|
|
|
func TestGeoLite_Lookup(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
filename := path.Join(tempDir, filepath.Base(mmdbPath))
|
|
err := util.CopyFileContents(mmdbPath, filename)
|
|
assert.NoError(t, err)
|
|
|
|
db, err := openDB(filename)
|
|
assert.NoError(t, err)
|
|
|
|
geo := &Geolocation{
|
|
mux: sync.RWMutex{},
|
|
db: db,
|
|
stopCh: make(chan struct{}),
|
|
}
|
|
assert.NotNil(t, geo)
|
|
defer func() {
|
|
err = geo.Stop()
|
|
if err != nil {
|
|
t.Errorf("geo.Stop: %s", err)
|
|
}
|
|
}()
|
|
|
|
record, err := geo.Lookup(net.ParseIP("89.160.20.128"))
|
|
assert.NoError(t, err)
|
|
assert.NotNil(t, record)
|
|
assert.Equal(t, "SE", record.Country.ISOCode)
|
|
assert.Equal(t, uint(2661886), record.Country.GeonameID)
|
|
assert.Equal(t, "Linköping", record.City.Names.En)
|
|
assert.Equal(t, uint(2694762), record.City.GeonameID)
|
|
assert.Equal(t, "EU", record.Continent.Code)
|
|
assert.Equal(t, uint(6255148), record.Continent.GeonameID)
|
|
}
|