Files
glchat/web/tests/setup.ts
T
grendervill bf0d130ee8 feat(cli): включение 2FA инстанс-админа командой totp-setup
2FA обязательна для инстанс-администраторов, но до её включения вход закрыт —
получался замкнутый круг. Добавлены команды обслуживания:

- `glchat totp-setup --email <admin>`: создаёт секрет, подтверждает его кодом,
  печатает секрет, otpauth-ссылку и 8 резервных кодов (каждый одноразовый);
- `glchat totp-reset --email <admin>`: удаляет секрет при потере устройства;
- код `auth.2fa_enrollment_required` с подсказкой, какую команду выполнить;
- установщик: флаг `--admin-2fa` для автоматического включения (по умолчанию
  печатает подсказку, чтобы секреты не оседали в логах установки).

Проверено сквозным прогоном локально: bootstrap → 403 на входе без 2FA →
totp-setup → вход с TOTP-кодом → профиль, серверы, комнаты, роли, участники,
аудит, создание сервера админом, 429 на шестой попытке входа, секретов в логах
нет.
2026-09-19 21:53:35 +03:00

18 lines
602 B
TypeScript

import '@testing-library/jest-dom/vitest';
import { afterEach, vi } from 'vitest';
import { cleanup } from '@testing-library/react';
// Общий экземпляр i18next для всех тестов: без него useTranslation вернёт ключи.
import '@/i18n';
import { setQueryClient } from '@/lib/queryClient';
afterEach(() => {
cleanup();
// Globals stubbed with vi.stubGlobal must be dropped between tests,
// otherwise a stub from one test leaks into the next one.
vi.unstubAllGlobals();
vi.restoreAllMocks();
window.localStorage.clear();
setQueryClient(null);
});