feat: реализовано дымовое тестирование ролей - #680
Conversation
WalkthroughДобавлен новый дымовой тест “Проверка прав” для конфигурации Smoke: модули ДТПроверкаПрав и ДТПроверкаПравСлужебныйВызовСервера реализуют проверку отсутствия прав интерактивного удаления у ролей и наличия права чтения хотя бы у одной не-административной роли. Модули подключены в конфигурацию и подсистему ДымовыеТесты. Документация дополнена описанием новой настройки и отдельным файлом verification-roles.md. ChangesДымовой тест проверки прав
Sequence Diagram(s)sequenceDiagram
participant ДТПроверкаПрав as ДТПроверкаПрав
participant Сервер as ДТПроверкаПравСлужебныйВызовСервера
participant МД as МетаданныеКонфигурации
participant Allure as Allure
ДТПроверкаПрав->>ДТПроверкаПрав: Настройки()
ДТПроверкаПрав->>Allure: установка тегов/параметров
ДТПроверкаПрав->>Сервер: ПроверкиПрав()
Сервер->>МД: перебор коллекций метаданных
Сервер->>Сервер: РолиСПравом(ПолноеИмяМетаданных, Право, ИсключенияРолей)
Сервер-->>ДТПроверкаПрав: список ролей по проверке
ДТПроверкаПрав->>ДТПроверкаПрав: ПроверитьОтсутствиеПраваУРолей / ПроверитьЧтениеНеАдминистраторами
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~30 minutes Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
# Conflicts: # documentation/docs/features/smoke/index.md # exts/smoke/src/Configuration/Configuration.mdo # exts/smoke/src/Subsystems/ДТ_ЮТПодключаемыеМодули/Subsystems/ДымовыеТесты/ДымовыеТесты.mdo
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (4)
documentation/docs/features/smoke/verification-roles.md (2)
61-66: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueИсправьте выравнивание комментариев уровней в дереве настроек.
Комментарий
// Уровень 2смещен относительно остальных (// Уровень 0,// Уровень 1,// Уровень 3). Выравнивание по вертикали улучшит читаемость.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@documentation/docs/features/smoke/verification-roles.md` around lines 61 - 66, The level comments in the tree are misaligned, making the documentation harder to read. Adjust the spacing in the tree block under the verification roles section so the inline comments for ДымовыеТесты, ПроверкаПрав, [Вид проверки], Исключения, and ИсключенияРолей line up vertically with each other.
7-7: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueУточните формулировку исключения ролей в описании теста чтения.
В строке 7 и 15 использована конструкция «кроме основных ролей конфигурации и исключений». Формулировка «и исключений» двусмысленна: неясно, относится ли «исключений» к ролям (исключения ролей) или к объектам метаданных. Уточните, что именно исключается: «кроме основных ролей конфигурации и ролей из списка исключений» или аналогичная однозначная формулировка.
Also applies to: 15-15
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@documentation/docs/features/smoke/verification-roles.md` at line 7, Уточните формулировку в описании теста чтения в документе, чтобы убрать двусмысленность про «и исключений»: в тексте рядом с упоминанием основных ролей конфигурации явно укажите, что исключаются именно роли из списка исключений, а не объекты или что-то иное. Обновите одинаково формулировки в этом абзаце и в связанном месте с тем же смыслом, чтобы описание было однозначным и легко сопоставлялось с проверками теста.exts/smoke/src/CommonModules/ДТПроверкаПрав/Module.bsl (1)
21-22: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winДобавьте doc-комментарии к экспортным точкам входа.
У
ИсполняемыеСценарии,НастройкииЗагрузитьНастройкинет описания перед объявлением. Для тестовых процедур это не требуется, но для экспортного API модуля — требуется. As per coding guidelines "Generate doc comments for export methods, excluding test methods" и "Method descriptions in 1C (BSL) code should be written as comments before the method declaration".Also applies to: 74-90
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@exts/smoke/src/CommonModules/ДТПроверкаПрав/Module.bsl` around lines 21 - 22, Добавьте doc-комментарии перед экспортными точками входа модуля: ИсполняемыеСценарии, Настройки и ЗагрузитьНастройки. Сейчас у этих экспортных методов нет описания перед объявлением, хотя для экспортного API это требуется; вставьте краткие комментарии непосредственно перед объявлениями этих методов, следуя принятому стилю 1C/BSL. Тестовые процедуры не трогайте, если они помечены как test-only.Source: Coding guidelines
exts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/Module.bsl (1)
21-43: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winДобавьте doc-комментарии к экспортным функциям.
Для
ПроверкиПравиРолиСПравомнет описания назначения и контракта результата, хотя для экспортных методов это требуется гайдами и описание должно идти перед объявлением метода. As per coding guidelines "Generate doc comments for export methods, excluding test methods" и "Method descriptions in 1C (BSL) code should be written as comments before the method declaration".🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@exts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/Module.bsl` around lines 21 - 43, Добавьте doc-комментарии перед экспортными методами ПроверкиПрав и РолиСПравом в Module.bsl, так как у них сейчас нет описания назначения и контракта результата. Оформите комментарии по правилам BSL и разместите их непосредственно перед объявлением функций; в описании кратко укажите, что делает ПроверкиПрав и какой Structure она возвращает, а также опишите параметры и результат для РолиСПравом. Не затрагивайте тестовые методы, только эти экспортные функции.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@exts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/Module.bsl`:
- Around line 187-190: Функция РольИсключенаИзПроверки() сейчас исключает
Метаданные.ОсновныеРоли для всех сценариев, из-за чего проверки удаления и
чтения получают одинаковое поведение. Измените логику в Module.bsl так, чтобы
исключение основных ролей применялось только в сценарии чтения, а для проверок
удаления РолиСПравом() продолжали учитывать основные роли; для этого передайте в
РольИсключенаИзПроверки() признак сценария или разделите логику рядом с вызовами
РолиСПравом() и ЮТДымовыеТестыСлужебныйКлиентСервер.ПодходитПодИсключения().
- Around line 58-62: In the error-handling block around ПравоДоступа in the
module test code, do not convert every exception into Ложь; this masks real
platform failures and unsupported право/метаданные combinations. Update the
logic in the Попытка/Исключение path so that only the expected specific case is
handled as “no access,” and any other exception is logged and rethrown instead
of setting ЕстьПраво to Ложь.
---
Nitpick comments:
In `@documentation/docs/features/smoke/verification-roles.md`:
- Around line 61-66: The level comments in the tree are misaligned, making the
documentation harder to read. Adjust the spacing in the tree block under the
verification roles section so the inline comments for ДымовыеТесты,
ПроверкаПрав, [Вид проверки], Исключения, and ИсключенияРолей line up vertically
with each other.
- Line 7: Уточните формулировку в описании теста чтения в документе, чтобы
убрать двусмысленность про «и исключений»: в тексте рядом с упоминанием основных
ролей конфигурации явно укажите, что исключаются именно роли из списка
исключений, а не объекты или что-то иное. Обновите одинаково формулировки в этом
абзаце и в связанном месте с тем же смыслом, чтобы описание было однозначным и
легко сопоставлялось с проверками теста.
In `@exts/smoke/src/CommonModules/ДТПроверкаПрав/Module.bsl`:
- Around line 21-22: Добавьте doc-комментарии перед экспортными точками входа
модуля: ИсполняемыеСценарии, Настройки и ЗагрузитьНастройки. Сейчас у этих
экспортных методов нет описания перед объявлением, хотя для экспортного API это
требуется; вставьте краткие комментарии непосредственно перед объявлениями этих
методов, следуя принятому стилю 1C/BSL. Тестовые процедуры не трогайте, если они
помечены как test-only.
In `@exts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/Module.bsl`:
- Around line 21-43: Добавьте doc-комментарии перед экспортными методами
ПроверкиПрав и РолиСПравом в Module.bsl, так как у них сейчас нет описания
назначения и контракта результата. Оформите комментарии по правилам BSL и
разместите их непосредственно перед объявлением функций; в описании кратко
укажите, что делает ПроверкиПрав и какой Structure она возвращает, а также
опишите параметры и результат для РолиСПравом. Не затрагивайте тестовые методы,
только эти экспортные функции.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: cd755a41-1ea4-42c8-b168-108057be00ab
📒 Files selected for processing (8)
documentation/docs/features/smoke/index.mddocumentation/docs/features/smoke/verification-roles.mdexts/smoke/src/CommonModules/ДТПроверкаПрав/Module.bslexts/smoke/src/CommonModules/ДТПроверкаПрав/ДТПроверкаПрав.mdoexts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/Module.bslexts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/ДТПроверкаПравСлужебныйВызовСервера.mdoexts/smoke/src/Configuration/Configuration.mdoexts/smoke/src/Subsystems/ДТ_ЮТПодключаемыеМодули/Subsystems/ДымовыеТесты/ДымовыеТесты.mdo
| Попытка | ||
| ЕстьПраво = ПравоДоступа(Право, ОбъектМетаданных, Роль); | ||
| Исключение | ||
| ЕстьПраво = Ложь; | ||
| КонецПопытки; |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Не маскируйте сбой ПравоДоступ() как отсутствие права.
Любое исключение здесь превращается в Ложь, поэтому ошибка платформы или неподдерживаемая комбинация права/метаданных даст ложноположительный зелёный тест. Лучше логировать и пробрасывать исключение, либо отлавливать только ожидаемый частный случай.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@exts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/Module.bsl`
around lines 58 - 62, In the error-handling block around ПравоДоступа in the
module test code, do not convert every exception into Ложь; this masks real
platform failures and unsupported право/метаданные combinations. Update the
logic in the Попытка/Исключение path so that only the expected specific case is
handled as “no access,” and any other exception is logged and rethrown instead
of setting ЕстьПраво to Ложь.
Source: Coding guidelines
| Функция РольИсключенаИзПроверки(Роль, ИсключенияРолей) | ||
|
|
||
| Возврат Метаданные.ОсновныеРоли.Содержит(Роль) | ||
| Или ЮТДымовыеТестыСлужебныйКлиентСервер.ПодходитПодИсключения(Роль.Имя, ИсключенияРолей); |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Не исключайте основные роли из всех проверок.
РольИсключенаИзПроверки() сейчас всегда отбрасывает Метаданные.ОсновныеРоли, а РолиСПравом() используется и в проверках удаления, и в проверке чтения. В итоге оба сценария удаления не увидят запрещённое право у основных ролей, хотя по цели PR исключать их нужно только для чтения.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@exts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/Module.bsl`
around lines 187 - 190, Функция РольИсключенаИзПроверки() сейчас исключает
Метаданные.ОсновныеРоли для всех сценариев, из-за чего проверки удаления и
чтения получают одинаковое поведение. Измените логику в Module.bsl так, чтобы
исключение основных ролей применялось только в сценарии чтения, а для проверок
удаления РолиСПравом() продолжали учитывать основные роли; для этого передайте в
РольИсключенаИзПроверки() признак сценария или разделите логику рядом с вызовами
РолиСПравом() и ЮТДымовыеТестыСлужебныйКлиентСервер.ПодходитПодИсключения().
Реализовано 3 новых вида тестов по проверке ролей:
Добавлены 2 общих модуля, логика трех тестов объединена в них. В настройках можно исключать как объекты метаданных так и сами роли.
При проверка чтения кроме основных ролей из проверки исключаются роли, которые указаны в свойстве конфигурации Основные роли.
Документация обновлена.
Close #677
Summary by CodeRabbit
New Features
Documentation
Configuration