Зачем: аудит показал, что 156 зелёных тестов на fakeDatabase не заметили, что создание сотрудника, подтверждение смены и расчёт зарплаты всегда падают на реальной PostgreSQL. Чтобы тесты и CI проверяли реальный SQL, нужен воспроизводимый стенд с ролями как в pilot, но с минимальными привилегиями: - scripts/test/provision-pg.mjs: bootstrap-админ (только как DBA/entrypoint) создаёт krona_migrator (NOSUPERUSER NOCREATEDB NOCREATEROLE, владелец БД и схемы public) и krona_staff_app (NOSUPERUSER NOBYPASSRLS NOINHERIT); пароли crypto.randomBytes, пишутся только в env-файл 0600, в вывод не попадают. scripts/create-app-role.mjs здесь не используется, т.к. без SUPERUSER он падает (находка N6, продуктовый код не трогаем). - scripts/test/migrate-roundtrip.mjs: up -> откат всех миграций -> up -> повторный up должен быть no-op; ролью мигратора, как требует AGENTS.md. Проверено на PostgreSQL 17.11: 11 миграций применены, откачены, применены повторно, третий up пустой.
22 lines
750 B
Text
22 lines
750 B
Text
== run 1: DATABASE_TEST_URL=<krona_staff_app@127.0.0.1:55433/krona_staff_e2e> DATABASE_TEST_MIGRATION_URL=<krona_migrator@...> npx vitest run tests/integration/tenant-isolation.test.ts
|
|
|
|
RUN v5.0.1 /workspace/krona-staff
|
|
|
|
|
|
Test Files 1 passed (1)
|
|
Tests 1 passed (1)
|
|
Start at 14:20:56
|
|
Duration 275ms (tests 63%, transform 23%, import 12%, worker 1%)
|
|
|
|
exit=0
|
|
== run 2: DATABASE_TEST_URL=<krona_staff_app@127.0.0.1:55433/krona_staff_e2e> DATABASE_TEST_MIGRATION_URL=<krona_migrator@...> npx vitest run tests/integration/tenant-isolation.test.ts
|
|
|
|
RUN v5.0.1 /workspace/krona-staff
|
|
|
|
|
|
Test Files 1 passed (1)
|
|
Tests 1 passed (1)
|
|
Start at 14:20:57
|
|
Duration 260ms (tests 62%, transform 23%, import 13%, worker 2%)
|
|
|
|
exit=0
|