Полная регрессия всех сценариев + 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: roles
Запущен: 2026-05-26T07:03:26.970Z Длительность: 1.6с
Итог: 8 ✓ / 0 ✗ / 0 ⚠ / 0 ◯ (всего 8)
✓ Step step01_bootstrap: Орг A + логин админа
Длительность: 1201мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Орг A + админ готовы | ✓ |
✓ Step step02_system_roles_exist: Системные роли (IsSystem=true) созданы — минимум 4
Длительность: 15мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Системные роли (ядро Администратор/Кладовщик/Кассир) присутствуют, не удаляемы | ✓ system=[Администратор, Кладовщик, Кассир] |
✓ Step step03_create_custom_role: Создание кастомной роли с правами → права сохранены
Длительность: 94мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Создание кастомной роли → 200/201 | ✓ status=201 |
| api | Права сохранены (productsView=true, productsEdit=false) | ✓ {"productsView":true,"productsEdit":false,"productsDelete":false,"productGroupsManage":false,"priceTypesManage":false,"unitsManage":false,"suppliesView":true,"suppliesEdit":false,"suppliesPost":false, |
✓ Step step04_update_permissions: Изменение прав роли применяется (PUT)
Длительность: 143мс
| Тип | Проверка | Результат |
|---|---|---|
| api | PUT прав роли → 200/204 | ✓ status=204 |
| api | Новое право productsEdit=true применилось | ✓ {"productsView":true,"productsEdit":true,"productsDelete":false,"productGroupsManage":false,"priceTypesManage":false,"unitsManage":false,"suppliesView":true,"suppliesEdit":false,"suppliesPost":false," |
✓ Step step05_delete_system_role_409: Удаление системной роли → 409
Длительность: 41мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Системная роль найдена | ✓ Администратор |
| api | DELETE системной роли → 409 | ✓ status=409 |
✓ Step step06_delete_role_in_use_409: Удаление роли, занятой сотрудником → 409
Длительность: 51мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Сотрудник с кастомной ролью создан | ✓ status=200 |
| api | DELETE занятой роли → 409 | ✓ status=409 |
✓ Step step07_delete_unused_role_ok: Удаление неиспользуемой роли → 204/200
Длительность: 42мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Неиспользуемая роль создана | ✓ |
| api | DELETE неиспользуемой роли → 200/204 | ✓ status=204 |
✓ Step step08_permission_authz_gap: Permission-based authz не enforced на API — gap
Длительность: 1мс
| Тип | Проверка | Результат |
|---|---|---|
| api | Permission-based authz — задокументированный gap (см. Logic gaps) | ✓ |
Summary
- Passed: 8
- Failed: 0
- Warnings: 0
- Skipped: 0
Critical bugs
Нет.
Logic gaps
- ТЗ 2.7.2 ожидает 4-6 системных ролей, реально 3 (Phase4b_RolesSimplify): Администратор, Кладовщик, Кассир. Это намеренное упрощение, не баг — ТЗ устарело.
- ТЗ 2.7.2: permission-based авторизация не enforced — эндпоинты используют только [Authorize(Roles=...)], флаги RolePermissions носят справочный характер для UI. Кастомная роль с ограниченными правами НЕ даёт 403 на запрещённых операциях (помечено «после P0-5»).