From b701bc9ada34f69189140f80ae133a0d776a9534 Mon Sep 17 00:00:00 2001 From: Alexander Medvedko Date: Fri, 25 Mar 2022 16:22:00 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=B0=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B5=D1=84=D0=B8=D0=BA=D1=81=D1=83=20=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлена настройка исключения из проверки объектов метаданных Исправлена ошибка падения теста если в настройках не указан параметр ОтборПоПрефиксу Обновлен пример настроек теста --- tests/smoke/smoke.example.json | 13 ++++- .../Ext/Form/Module.bsl" | 49 +++++++++++++------ 2 files changed, 46 insertions(+), 16 deletions(-) diff --git a/tests/smoke/smoke.example.json b/tests/smoke/smoke.example.json index d1dcc4675..134cdc526 100644 --- a/tests/smoke/smoke.example.json +++ b/tests/smoke/smoke.example.json @@ -782,7 +782,18 @@ "Тесты_ПроверкаПраваИнтерактивногоУдаления": { "Используется": false, - "ПроверятьОсновныеРоли": true + "ПроверятьОсновныеРоли": true, + "Префикс": "", + "ОтборПоПрефиксу": false, + "ИсключенияИзПроверок":{ + + "Справочники":[ + "Справочник1" + ], + "Документы":[ + "Документ1" + ], + } }, diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 329c3ce4a..242e73a92 100644 --- "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -12,6 +12,8 @@ Перем ОтборПоПрефиксу; &НаКлиенте Перем ПрефиксОбъектов; +&НаКлиенте +Перем ИсключенияИзПроверок; #КонецОбласти @@ -37,7 +39,7 @@ Возврат; КонецЕсли; - ОбъектыМетаданных = ОбъектыМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов); + ОбъектыМетаданных = ОбъектыМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов, ИсключенияИзПроверок); Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл Если ОбъектМетаданных.Значение.Количество() = 0 Тогда @@ -65,12 +67,14 @@ Возврат; КонецЕсли; - ПрефиксОбъектов = ""; - ВыводитьИсключения = Ложь; - ПроверятьОсновныеРоли = Истина; - ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); - Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); - Настройки = Объект.Настройки; + ПрефиксОбъектов = ""; + ОтборПоПрефиксу = Ложь; + ИсключенияИзПроверок = Новый Структура; + ПроверятьОсновныеРоли = Истина; + + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); @@ -82,11 +86,15 @@ КонецЕсли; Если Настройки.Свойство("Префикс") Тогда - ПрефиксОбъектов = ВРег(Настройки.Префикс); + ПрефиксОбъектов = ВРег(Настройки.Префикс); КонецЕсли; Если Настройки.Свойство("ОтборПоПрефиксу") Тогда - ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок = Настройки.ИсключенияИзПроверок; КонецЕсли; КонецПроцедуры @@ -99,8 +107,9 @@ Процедура ТестДолжен_ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных) Экспорт Результат = ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ПроверятьОсновныеРоли); - Утверждения.Проверить(Результат = "", "Есть право на интерактивное удаление объектов:" + Результат); - + ШаблонСообщения = НСтр("ru = 'Есть право на интерактивное удаление объектов:%1'"); + Утверждения.Проверить(Результат = "", СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Результат)); + КонецПроцедуры &НаСервереБезКонтекста @@ -129,7 +138,9 @@ #Область СлужебныеПроцедурыИФункции &НаСервереБезКонтекста -Функция ОбъектыМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов) +Функция ОбъектыМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов, ИсключенияИзПроверок) + + ЛокальныйКонтекстЯдра = ВнешниеОбработки.Создать("xddTestRunner"); СтроковыеУтилиты = СтроковыеУтилиты(); Пояснение = НСтр("ru = 'Проверка права интерактивного удаления'"); @@ -146,18 +157,26 @@ Для Каждого Элемент Из ОбъектыМетаданных Цикл Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл + ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя(); Если ОтборПоПрефиксу И Не СтрНачинаетсяС(ВРег(ОбъектМетаданных.Имя), ВРег(ПрефиксОбъектов)) Тогда Продолжить; КонецЕсли; - - ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ОбъектМетаданных.ПолноеИмя(), Пояснение); + Если ИсключенияИзПроверок.Свойство(Элемент.Ключ) + И ТипЗнч(ИсключенияИзПроверок[Элемент.Ключ]) = Тип("Массив") + И ЛокальныйКонтекстЯдра.ЕстьВИсключаемойКоллекции(ОбъектМетаданных.Имя, ИсключенияИзПроверок[Элемент.Ключ]) Тогда + Продолжить; + КонецЕсли; + // + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ПолноеИмяОбъекта, Пояснение); СтруктураЭлемента = Новый Структура; СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); - СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмяОбъекта); ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураЭлемента); КонецЦикла; КонецЦикла; + ЛокальныйКонтекстЯдра = Неопределено; + Возврат ОбъектыМетаданных; КонецФункции From 5ab63dd153c514e7a203944eabbddd7c92c8544d Mon Sep 17 00:00:00 2001 From: Alexander Medvedko Date: Thu, 2 May 2024 15:25:22 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=D0=BD=D0=B0=20=D0=BD=D0=B0=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B9=D0=BA=D0=B0=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=D0=B7=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=20=D0=BC=D0=B5=D1=82=D0=B0=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D0=B8=20=D1=80=D0=BE=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Обновлен пример настроек теста --- tests/smoke/smoke.example.json | 9 ++-- .../Ext/Form/Module.bsl" | 43 +++++++++++++------ 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/tests/smoke/smoke.example.json b/tests/smoke/smoke.example.json index 134cdc526..685043af5 100644 --- a/tests/smoke/smoke.example.json +++ b/tests/smoke/smoke.example.json @@ -783,8 +783,10 @@ "Используется": false, "ПроверятьОсновныеРоли": true, - "Префикс": "", - "ОтборПоПрефиксу": false, + "ПрефиксОбъекта": "", + "ОтборПоПрефиксуОбъекта": false, + "ПрефиксРоли": "", + "ОтборПоПрефиксуРоли": false, "ИсключенияИзПроверок":{ "Справочники":[ @@ -792,7 +794,8 @@ ], "Документы":[ "Документ1" - ], + ] + } }, diff --git "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 242e73a92..079ad937c 100644 --- "a/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/tests/smoke/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/\320\242\320\265\321\201\321\202\321\213_\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260\320\237\321\200\320\260\320\262\320\260\320\230\320\275\321\202\320\265\321\200\320\260\320\272\321\202\320\270\320\262\320\275\320\276\320\263\320\276\320\243\320\264\320\260\320\273\320\265\320\275\320\270\321\217/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -9,9 +9,13 @@ &НаКлиенте Перем ПроверятьОсновныеРоли; &НаКлиенте -Перем ОтборПоПрефиксу; +Перем ОтборПоПрефиксуОбъекта; &НаКлиенте -Перем ПрефиксОбъектов; +Перем ПрефиксОбъекта; +&НаКлиенте +Перем ОтборПоПрефиксуРоли; +&НаКлиенте +Перем ПрефиксРоли; &НаКлиенте Перем ИсключенияИзПроверок; @@ -39,7 +43,7 @@ Возврат; КонецЕсли; - ОбъектыМетаданных = ОбъектыМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов, ИсключенияИзПроверок); + ОбъектыМетаданных = ОбъектыМетаданных(ОтборПоПрефиксуОбъекта, ПрефиксОбъекта, ИсключенияИзПроверок); Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл Если ОбъектМетаданных.Значение.Количество() = 0 Тогда @@ -67,8 +71,10 @@ Возврат; КонецЕсли; - ПрефиксОбъектов = ""; - ОтборПоПрефиксу = Ложь; + ПрефиксОбъекта = ""; + ОтборПоПрефиксуОбъекта = Ложь; + ПрефиксРоли = ""; + ОтборПоПрефиксуРоли = Ложь; ИсключенияИзПроверок = Новый Структура; ПроверятьОсновныеРоли = Истина; @@ -85,12 +91,20 @@ ПроверятьОсновныеРоли = Настройки.ПроверятьОсновныеРоли; КонецЕсли; - Если Настройки.Свойство("Префикс") Тогда - ПрефиксОбъектов = ВРег(Настройки.Префикс); + Если Настройки.Свойство("ПрефиксОбъекта") Тогда + ПрефиксОбъекта = ВРег(Настройки.ПрефиксОбъекта); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксуОбъекта") Тогда + ОтборПоПрефиксуОбъекта = Настройки.ОтборПоПрефиксуОбъекта; + КонецЕсли; + + Если Настройки.Свойство("ПрефиксРоли") Тогда + ПрефиксРоли = ВРег(Настройки.ПрефиксРоли); КонецЕсли; - Если Настройки.Свойство("ОтборПоПрефиксу") Тогда - ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + Если Настройки.Свойство("ОтборПоПрефиксуРоли") Тогда + ОтборПоПрефиксуРоли = Настройки.ОтборПоПрефиксуРоли; КонецЕсли; Если Настройки.Свойство("ИсключенияИзПроверок") Тогда @@ -106,14 +120,14 @@ &НаКлиенте Процедура ТестДолжен_ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных) Экспорт - Результат = ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ПроверятьОсновныеРоли); + Результат = ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ОтборПоПрефиксуРоли, ПрефиксРоли, ПроверятьОсновныеРоли); ШаблонСообщения = НСтр("ru = 'Есть право на интерактивное удаление объектов:%1'"); Утверждения.Проверить(Результат = "", СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Результат)); КонецПроцедуры &НаСервереБезКонтекста -Функция ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ПроверятьОсновныеРоли) +Функция ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ОтборПоПрефиксуРоли, ПрефиксРоли, ПроверятьОсновныеРоли) ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); ЕстьПраво = Ложь; @@ -123,6 +137,9 @@ Если Не ПроверятьОсновныеРоли И Метаданные.ОсновныеРоли.Содержит(Роль) Тогда Продолжить; КонецЕсли; + Если ОтборПоПрефиксуРоли И Не СтрНачинаетсяС(ВРег(Роль.Имя), ВРег(ПрефиксРоли)) Тогда + Продолжить; + КонецЕсли; ЕстьПраво = ПравоДоступа("ИнтерактивноеУдаление", ОбъектМетаданных, Роль); Если ЕстьПраво Тогда Результат = Результат + Символы.ПС + Роль.Имя; @@ -138,7 +155,7 @@ #Область СлужебныеПроцедурыИФункции &НаСервереБезКонтекста -Функция ОбъектыМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов, ИсключенияИзПроверок) +Функция ОбъектыМетаданных(ОтборПоПрефиксуОбъекта, ПрефиксОбъекта, ИсключенияИзПроверок) ЛокальныйКонтекстЯдра = ВнешниеОбработки.Создать("xddTestRunner"); @@ -158,7 +175,7 @@ Для Каждого Элемент Из ОбъектыМетаданных Цикл Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя(); - Если ОтборПоПрефиксу И Не СтрНачинаетсяС(ВРег(ОбъектМетаданных.Имя), ВРег(ПрефиксОбъектов)) Тогда + Если ОтборПоПрефиксуОбъекта И Не СтрНачинаетсяС(ВРег(ОбъектМетаданных.Имя), ВРег(ПрефиксОбъекта)) Тогда Продолжить; КонецЕсли; Если ИсключенияИзПроверок.Свойство(Элемент.Ключ)