group_model_allowlist_repair_migration_test.go 1.1 KB

123456789101112131415161718192021222324252627
  1. package migrations
  2. import (
  3. "strings"
  4. "testing"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestGroupModelAllowlistRepairMigration(t *testing.T) {
  8. content, err := FS.ReadFile("236_group_model_allowlist_repair.sql")
  9. require.NoError(t, err)
  10. sql := strings.Join(strings.Fields(string(content)), " ")
  11. // 三种残留状态都要收敛到 model_allowlist。
  12. require.Contains(t, sql, "ALTER TABLE groups RENAME COLUMN models_list_config TO model_allowlist")
  13. require.Contains(t, sql, "ADD COLUMN IF NOT EXISTS model_allowlist JSONB NOT NULL DEFAULT '{}'::jsonb")
  14. require.Contains(t, sql, "SET model_allowlist = models_list_config")
  15. require.Contains(t, sql, "ALTER TABLE groups ALTER COLUMN model_allowlist SET NOT NULL")
  16. require.Contains(t, sql, "COMMENT ON COLUMN groups.model_allowlist")
  17. // 235 用 table_schema = 'public' 判定列是否存在,而 ALTER TABLE 走的是 search_path;
  18. // 修复迁移必须用 regclass 解析,两者才不会在非 public schema 上分叉。
  19. require.NotContains(t, sql, "table_schema = 'public'")
  20. require.Contains(t, sql, "attrelid = 'groups'::regclass")
  21. }