Files
OpenFlare/backend/openflare/plugins/server/kernel/geoip/runtime_test.go
T

51 lines
1.4 KiB
Go

// Copyright 2026 Arctel.net
// SPDX-License-Identifier: Apache-2.0
package geoip
import (
"context"
"testing"
"Wavelet/openflare/plugins/server/kernel/model"
"Wavelet/openflare/plugins/server/kernel/repository"
pkggeoip "Wavelet/openflare/share/geoip"
"github.com/glebarez/sqlite"
"gorm.io/gorm"
)
func TestEnsureRuntimeProviderInitializesConfiguredProvider(t *testing.T) {
sqliteDB, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{DisableForeignKeyConstraintWhenMigrating: true})
if err != nil {
t.Fatalf("open sqlite: %v", err)
}
if err := sqliteDB.AutoMigrate(&model.SystemConfig{}); err != nil {
t.Fatalf("migrate: %v", err)
}
repository.SetDBForTest(sqliteDB)
t.Cleanup(func() {
repository.SetDBForTest(nil)
ResetRuntimeForTest()
})
ctx := context.Background()
ResetRuntimeForTest()
// 通过 SystemConfig 设置 GeoIPProvider 配置
if err := repository.DB(ctx).Create(&model.SystemConfig{
Key: model.ConfigKeyGeoIPProvider,
Value: pkggeoip.ProviderIPInfo,
Type: "business",
Visibility: 0,
}).Error; err != nil {
t.Fatalf("create system config: %v", err)
}
if err := EnsureRuntimeProvider(ctx); err != nil {
t.Fatalf("EnsureRuntimeProvider error = %v", err)
}
if pkggeoip.CurrentProvider == nil || pkggeoip.CurrentProvider.Name() == "EmptyProvider" {
t.Fatalf("expected ipinfo provider, got %#v", pkggeoip.CurrentProvider)
}
}