mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-02-28 05:02:59 +00:00
62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
package database
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/mhsanaei/3x-ui/v2/database/model"
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/logger"
|
|
)
|
|
|
|
func seedLegacySettings(t *testing.T, dbPath string, rows []model.Setting) {
|
|
t.Helper()
|
|
gdb, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{Logger: logger.Discard})
|
|
if err != nil {
|
|
t.Fatalf("open legacy db: %v", err)
|
|
}
|
|
if err := gdb.AutoMigrate(&model.Setting{}); err != nil {
|
|
t.Fatalf("migrate legacy setting table: %v", err)
|
|
}
|
|
for _, row := range rows {
|
|
if err := gdb.Create(&row).Error; err != nil {
|
|
t.Fatalf("insert legacy row %s: %v", row.Key, err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestInitDBMigratesLegacySettingsToAppSettings(t *testing.T) {
|
|
dbPath := filepath.Join(t.TempDir(), "migrate.db")
|
|
seedLegacySettings(t, dbPath, []model.Setting{
|
|
{Key: "webPort", Value: "8899"},
|
|
{Key: "subPath", Value: "/legacy-sub/"},
|
|
{Key: "tgBotEnable", Value: "true"},
|
|
{Key: "xrayTemplateConfig", Value: `{"log":{}}`},
|
|
})
|
|
|
|
if err := InitDB(dbPath); err != nil {
|
|
t.Fatalf("InitDB failed: %v", err)
|
|
}
|
|
|
|
cfg, err := GetAppSettings()
|
|
if err != nil {
|
|
t.Fatalf("GetAppSettings failed: %v", err)
|
|
}
|
|
|
|
if cfg.WebPort != 8899 {
|
|
t.Fatalf("expected WebPort=8899, got %d", cfg.WebPort)
|
|
}
|
|
if cfg.SubPath != "/legacy-sub/" {
|
|
t.Fatalf("expected SubPath migrated, got %q", cfg.SubPath)
|
|
}
|
|
if !cfg.TgBotEnable {
|
|
t.Fatalf("expected TgBotEnable=true from legacy row")
|
|
}
|
|
if cfg.XrayTemplateConfig != `{"log":{}}` {
|
|
t.Fatalf("expected xray template config migrated, got %q", cfg.XrayTemplateConfig)
|
|
}
|
|
if cfg.SessionMaxAge == 0 {
|
|
t.Fatalf("expected default SessionMaxAge to be seeded")
|
|
}
|
|
}
|