# 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»).