krona-staff/tests/integration
grok 29fefc1933 test(db): стенд PostgreSQL с мигратором без SUPERUSER
Зачем: аудит показал, что 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 пустой.
2026-09-26 14:21:47 +07:00
..
health.test.ts feat(staff): add finance calendar and employee portal 2026-09-24 18:12:24 +07:00
openapi-runtime.test.ts feat(sync): add offline sync backend foundation 2026-09-26 13:10:27 +07:00
portal.test.ts feat(staff): import workbook professions and dated payroll 2026-09-24 21:14:03 +07:00
tenant-isolation.test.ts test(db): стенд PostgreSQL с мигратором без SUPERUSER 2026-09-26 14:21:47 +07:00