3x-ui/database/app_settings_migration_test.go

63 lines
1.6 KiB
Go
Raw Normal View History

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")
}
}