Skip to content

feat: реализовано дымовое тестирование ролей - #680

Merged
alkoleft merged 2 commits into
bia-technologies:developfrom
monwig:feat/677/verificationRoles
Jun 30, 2026
Merged

feat: реализовано дымовое тестирование ролей#680
alkoleft merged 2 commits into
bia-technologies:developfrom
monwig:feat/677/verificationRoles

Conversation

@monwig

@monwig monwig commented Jun 13, 2026

Copy link
Copy Markdown

Реализовано 3 новых вида тестов по проверке ролей:

  • Проверка прав интерактивного удаления
  • Проверка прав интерактивного удаления помеченных
  • Прочерка чтения, кроме основных ролей

Добавлены 2 общих модуля, логика трех тестов объединена в них. В настройках можно исключать как объекты метаданных так и сами роли.

При проверка чтения кроме основных ролей из проверки исключаются роли, которые указаны в свойстве конфигурации Основные роли.

Документация обновлена.

Close #677

Summary by CodeRabbit

  • New Features

    • Добавлены новые дымовые тесты проверки прав: для интерактивного удаления, удаления помеченных и чтения не администраторами.
    • Расширены настройки дымовых тестов новыми параметрами для включения, исключений и выбора проверок.
  • Documentation

    • Обновлена документация по дымовым тестам и добавлено отдельное описание проверки прав ролей с примерами конфигурации.
  • Configuration

    • Подключены новые модули и добавлен их доступ в разделе дымовых тестов.

@coderabbitai

coderabbitai Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Добавлен новый дымовой тест “Проверка прав” для конфигурации Smoke: модули ДТПроверкаПрав и ДТПроверкаПравСлужебныйВызовСервера реализуют проверку отсутствия прав интерактивного удаления у ролей и наличия права чтения хотя бы у одной не-административной роли. Модули подключены в конфигурацию и подсистему ДымовыеТесты. Документация дополнена описанием новой настройки и отдельным файлом verification-roles.md.

Changes

Дымовой тест проверки прав

Layer / File(s) Summary
Серверный сервис вычисления прав ролей
exts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/Module.bsl, ...ДТПроверкаПравСлужебныйВызовСервера.mdo
Функция РолиСПравом вычисляет роли с заданным правом по объекту метаданных, исключая основные/указанные роли; вспомогательные функции собирают проверки интерактивного удаления и чтения не администраторами, формируют описания проверок и списки коллекций метаданных.
Сценарии дымового теста и регистрация наборов
exts/smoke/src/CommonModules/ДТПроверкаПрав/Module.bsl, .../ДТПроверкаПрав.mdo
Модуль ДТПроверкаПрав определяет точку входа ИсполняемыеСценарии, процедуры ПроверитьОтсутствиеПраваУРолей и ПроверитьЧтениеНеАдминистраторами, а также загрузку/нормализацию настроек и регистрацию серверных тестов с Allure-атрибутами.
Подключение модулей в конфигурацию
exts/smoke/src/Configuration/Configuration.mdo, .../ДымовыеТесты.mdo
Новые общие модули добавлены в commonModules конфигурации и в content подсистемы ДымовыеТесты.
Документация по настройке проверки прав
documentation/docs/features/smoke/index.md, documentation/docs/features/smoke/verification-roles.md
Документация описывает новый параметр настройки ПроверкаПрав, виды проверок, структуру настроек, исключения и примеры JSON-конфигурации.

Sequence Diagram(s)

sequenceDiagram
  participant ДТПроверкаПрав as ДТПроверкаПрав
  participant Сервер as ДТПроверкаПравСлужебныйВызовСервера
  participant МД as МетаданныеКонфигурации
  participant Allure as Allure

  ДТПроверкаПрав->>ДТПроверкаПрав: Настройки()
  ДТПроверкаПрав->>Allure: установка тегов/параметров
  ДТПроверкаПрав->>Сервер: ПроверкиПрав()
  Сервер->>МД: перебор коллекций метаданных
  Сервер->>Сервер: РолиСПравом(ПолноеИмяМетаданных, Право, ИсключенияРолей)
  Сервер-->>ДТПроверкаПрав: список ролей по проверке
  ДТПроверкаПрав->>ДТПроверкаПрав: ПроверитьОтсутствиеПраваУРолей / ПроверитьЧтениеНеАдминистраторами
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Suggested reviewers

  • alkoleft

Кролик прыгнул в код смоук-тестов,
Проверил роли — нет ли в них секретов,
Чтоб удалять помеченных не смели,
А чтенье — хоть один админ не делит.
🐇📋✨ Права чисты, тесты зелены!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Заголовок точно отражает основное изменение: добавление дымового тестирования ролей.
Linked Issues check ✅ Passed Реализованы все три требования: чтение не администраторами, запрет интерактивного удаления и удаления помеченных объектов.
Out of Scope Changes check ✅ Passed Изменения ограничены документацией, конфигурацией и модулями, необходимыми для новых дымовых тестов ролей.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

# Conflicts:
#	documentation/docs/features/smoke/index.md
#	exts/smoke/src/Configuration/Configuration.mdo
#	exts/smoke/src/Subsystems/ДТ_ЮТПодключаемыеМодули/Subsystems/ДымовыеТесты/ДымовыеТесты.mdo
@alkoleft
alkoleft merged commit f899f53 into bia-technologies:develop Jun 30, 2026
0 of 4 checks passed

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between ac5e84a and 348e3c6.

📒 Files selected for processing (8)
  • documentation/docs/features/smoke/index.md
  • documentation/docs/features/smoke/verification-roles.md
  • exts/smoke/src/CommonModules/ДТПроверкаПрав/Module.bsl
  • exts/smoke/src/CommonModules/ДТПроверкаПрав/ДТПроверкаПрав.mdo
  • exts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/Module.bsl
  • exts/smoke/src/CommonModules/ДТПроверкаПравСлужебныйВызовСервера/ДТПроверкаПравСлужебныйВызовСервера.mdo
  • exts/smoke/src/Configuration/Configuration.mdo
  • exts/smoke/src/Subsystems/ДТ_ЮТПодключаемыеМодули/Subsystems/ДымовыеТесты/ДымовыеТесты.mdo

Comment on lines +58 to +62
Попытка
ЕстьПраво = ПравоДоступа(Право, ОбъектМетаданных, Роль);
Исключение
ЕстьПраво = Ложь;
КонецПопытки;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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

Comment on lines +187 to +190
Функция РольИсключенаИзПроверки(Роль, ИсключенияРолей)

Возврат Метаданные.ОсновныеРоли.Содержит(Роль)
Или ЮТДымовыеТестыСлужебныйКлиентСервер.ПодходитПодИсключения(Роль.Имя, ИсключенияРолей);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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 так, чтобы
исключение основных ролей применялось только в сценарии чтения, а для проверок
удаления РолиСПравом() продолжали учитывать основные роли; для этого передайте в
РольИсключенаИзПроверки() признак сценария или разделите логику рядом с вызовами
РолиСПравом() и ЮТДымовыеТестыСлужебныйКлиентСервер.ПодходитПодИсключения().

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[NEW] Добавить дымовой тест проверки ролей

2 participants