Полная регрессия всех сценариев + 6 новых областей этой сессии (employees, roles, superadmin-console, platform-smtp, auth-password, security-edge). За день исправлено 4 бага: уволенный сотрудник логинится (P0), конкурентное проведение приёмки ломает инвариант (critical), refresh не гасится после ротации (high), change-owner принимал короткий reason (medium). Нереализованный по ТЗ функционал (отчёты/склад-документы/POS/permission-authz/login-ratelimit) зафиксирован как Logic gaps. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
4.1 KiB
4.1 KiB
E2E report: employees
Запущен: 2026-05-26T07:03:19.659Z Длительность: 3.6с
Итог: 10 ✓ / 0 ✗ / 0 ⚠ / 0 ◯ (всего 10)
✓ Step step01_bootstrap: Орг A + логин админа + выбор не-админской роли
Длительность: 1197мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Орг A + не-админская роль найдены | ✓ role=Кладовщик |
✓ Step step02_create_without_account: Создание сотрудника без учётки (createAccount=false) → UserId=null
Длительность: 27мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Создан без учётки → 200/201 | ✓ status=200 |
| api | UserId = null | ✓ userId=null |
| api | generatedPassword отсутствует | ✓ |
✓ Step step03_create_with_account: Создание сотрудника с учёткой → temp password в ответе, User создан
Длительность: 351мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Создан с учёткой → 200/201 | ✓ status=200 |
| api | Temp password возвращён один раз | ✓ |
| api | UserId присвоен | ✓ userId=75ef2110-7770-4256-9b7d-33be90b832de |
✓ Step step04_email_required: createAccount=true без email → 400
Длительность: 13мс
| Тип | Проверка | Результат |
|---|---|---|
| api | createAccount=true без email → 400 | ✓ status=400 |
✓ Step step05_duplicate_email: Дубль email при createAccount → 4xx
Длительность: 17мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Дубль email → 4xx (rejected) | ✓ status=400 |
✓ Step step06_account_can_login: Новый сотрудник логинится временным паролем → 200
Длительность: 282мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Логин новым сотрудником → 200 | ✓ status=200 |
✓ Step step07_fire_blocks_login: Увольнение (DELETE) гасит логин: повторный login и refresh → 4xx
Длительность: 581мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Увольнение (DELETE) → 204 | ✓ status=204 |
| db | Employee.IsActive=false (уволен) | ✓ IsActive=f |
| db | User.IsActive=false (логин погашен) | ✓ User.IsActive=f |
| api | Повторный login уволенного → 4xx | ✓ status=400 |
| api | Refresh уволенного → 4xx | ✓ status=400 |
✓ Step step08_two_step_delete: Второй DELETE → soft-delete (IsDeleted), третий → 409
Длительность: 262мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Второй DELETE → 204 (soft-delete) | ✓ status=204 |
| db | Employee.IsDeleted=true | ✓ IsDeleted=t |
| api | Третий DELETE → 409 (уже удалён) | ✓ status=409 |
✓ Step step09_owner_self_protected: DELETE главного администратора (он же self) → 403
Длительность: 101мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Главный администратор найден в списке | ✓ owner=1c6f6673-4a67-464e-bf3e-00f71cdc8977 |
| api | DELETE главного администратора (он же self) → 403 | ✓ status=403 |
✓ Step step10_tenant_isolation: Админ орг A не видит и не удаляет сотрудника орг B → 404
Длительность: 769мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Сотрудник в орг B создан | ✓ |
| api | GET чужого сотрудника (орг B) из орг A → 404 | ✓ status=404 |
| api | DELETE чужого сотрудника → 404 | ✓ status=404 |
Summary
- Passed: 10
- Failed: 0
- Warnings: 0
- Skipped: 0
Critical bugs
Нет.