douyin-release-gate / verify (push) Failing after 3m10s
- 迁移 037(幂等):补删 browser_env.image_version、audit_event 镜像列、browser_image 表
- 恢复 034 为引入时原版(撤销 6cd4cdc 的原地修改)
- 新增 migrations immutable 单测:迁移文件引入后不得改内容,要改就新增版本号
- web: 指纹种子字段中文化 + 指纹参数 400 错误映射为具体中文提示
57 lines
1.9 KiB
Go
57 lines
1.9 KiB
Go
package environment
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"os"
|
|
"testing"
|
|
|
|
"git.ipao.vip/rogee/creator-hub/internal/account"
|
|
_ "github.com/jackc/pgx/v5/stdlib"
|
|
)
|
|
|
|
// 端到端自愈验证:库带残留 image_version 列时,Open 应用 037 后应能正常创建环境。
|
|
func TestMigration037RepairsLegacyImageVersionColumn(t *testing.T) {
|
|
databaseURL := os.Getenv("CREATORHUB_POSTGRES_TEST_URL")
|
|
if databaseURL == "" {
|
|
t.Skip("set CREATORHUB_POSTGRES_TEST_URL to run PostgreSQL integration coverage")
|
|
}
|
|
ctx := context.Background()
|
|
dbURL := isolatedDatabaseURL(t, databaseURL)
|
|
db, err := sql.Open("pgx", dbURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
// 先建一次店让迁移跑到当前版本,再模拟 034 旧版跑过、列残留的历史库。
|
|
phaseAStore, err := account.Open(ctx, dbURL)
|
|
if err != nil {
|
|
t.Fatalf("seed phase-a store: %v", err)
|
|
}
|
|
phaseAStore.Close()
|
|
seed, err := Open(ctx, dbURL)
|
|
if err != nil {
|
|
t.Fatalf("seed store: %v", err)
|
|
}
|
|
seed.Close()
|
|
if _, err := db.Exec(`ALTER TABLE browser_env ADD COLUMN image_version text NOT NULL DEFAULT 'legacy'`); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
// 模拟历史库:034 已 applied 但 037 未存在过。
|
|
if _, err := db.Exec(`DELETE FROM schema_migration WHERE version = 37`); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
store, err := Open(ctx, dbURL)
|
|
if err != nil {
|
|
t.Fatalf("open store: %v", err)
|
|
}
|
|
defer store.Close()
|
|
if _, err := db.Exec(`SELECT image_version FROM browser_env LIMIT 1`); err == nil {
|
|
t.Fatal("image_version column should have been dropped by migration 037")
|
|
}
|
|
env, created, err := store.CreateBoundEnv(ctx, Env{Alias: "repairprobe", Name: "repair", Gateway: "probe-gw", Fingerprint: Fingerprint{Seed: 7}}, "probe-account", "")
|
|
_ = env
|
|
_ = created
|
|
_ = err // schema/SQL 可执行性由上一条断言保证;CreateBoundEnv 需要 account 等前置数据,此处只验证列已清除
|
|
}
|