Полная регрессия всех сценариев + 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>
111 lines
4.1 KiB
Markdown
111 lines
4.1 KiB
Markdown
# 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
|
||
|
||
Нет.
|