diff --git a/scripts/test/accept-branch.mjs b/scripts/test/accept-branch.mjs index 5a22339..d7c1f78 100644 --- a/scripts/test/accept-branch.mjs +++ b/scripts/test/accept-branch.mjs @@ -23,6 +23,8 @@ // Интеграционная БД в этом режиме заведомо изолирована, поэтому для тестов с «предохранителем» // (codex/fix-live-database: DATABASE_TEST_ISOLATED, DATABASE_TEST_GUARD_TOKEN, таблица // krona_staff_test_guard, имя БД krona_staff_audit_*) он выставляется со случайным маркером. +// Для tests/integration/rehome-tenant.test.ts (codex/fix-tenant-rehome) — отдельная пустая БД +// krona_acc_rehome_test под суперпользователем и DATABASE_REHOME_TEST_CONFIRM (docs/TENANT-REHOME.md). // Файл, где все тесты пропущены, — отдельный вердикт SKIP (ничего не проверил). // Если заданы E2E_MIGRATOR_URL и E2E_APP_URL — роли не создаются и пароли не меняются, // все прогоны идут последовательно в БД из этих URL со сбросом через откат всех миграций. @@ -318,6 +320,19 @@ async function createGuard(db) { return marker; } +/** + * Отдельная пустая одноразовая БД для tests/integration/rehome-tenant.test.ts (codex/fix-tenant-rehome, + * docs/TENANT-REHOME.md): имя на `_rehome_test`, суперпользователь, явное подтверждение. + */ +async function rehomeTestDatabase() { + const name = 'krona_acc_rehome_test'; + const db = await freshDatabase(name); + return { + DATABASE_REHOME_TEST_URL: db.admin, + DATABASE_REHOME_TEST_CONFIRM: 'I_ACKNOWLEDGE_DISPOSABLE_PG17_DATABASE', + }; +} + async function stepIntegration(target, wt) { const dir = path.join(wt.dir, 'tests/integration'); const files = existsSync(dir) @@ -332,6 +347,12 @@ async function stepIntegration(target, wt) { const db = await freshDatabase('krona_staff_audit_acc_it'); const m = await migrate(wt, db, path.join(logDir, `${slug}-migrate.txt`)); const guard = m.code === 0 && dbMode === 'admin' ? await createGuard(db) : null; + const rehomeEnv = + m.code === 0 && + dbMode === 'admin' && + readFileSync(path.join(dir, file), 'utf8').includes('DATABASE_REHOME_TEST_URL') + ? await rehomeTestDatabase() + : {}; if (m.code !== 0) { results.push({ file, @@ -352,6 +373,7 @@ async function stepIntegration(target, wt) { DATABASE_TEST_MIGRATION_URL: db.migrator, DATABASE_MIGRATION_URL: db.migrator, ...(guard ? { DATABASE_TEST_ISOLATED: 'true', DATABASE_TEST_GUARD_TOKEN: guard } : {}), + ...rehomeEnv, }), logFile: path.join(logDir, `${slug}.txt`), },