diff --git a/tests/smoke/smoke.example.json b/tests/smoke/smoke.example.json index d1dcc4675..685043af5 100644 --- a/tests/smoke/smoke.example.json +++ b/tests/smoke/smoke.example.json @@ -782,7 +782,21 @@ "Тесты_ПроверкаПраваИнтерактивногоУдаления": { "Используется": false, - "ПроверятьОсновныеРоли": true + "ПроверятьОсновныеРоли": true, + "ПрефиксОбъекта": "", + "ОтборПоПрефиксуОбъекта": false, + "ПрефиксРоли": "", + "ОтборПоПрефиксуРоли": 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..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,15 @@ &НаКлиенте Перем ПроверятьОсновныеРоли; &НаКлиенте -Перем ОтборПоПрефиксу; +Перем ОтборПоПрефиксуОбъекта; &НаКлиенте -Перем ПрефиксОбъектов; +Перем ПрефиксОбъекта; +&НаКлиенте +Перем ОтборПоПрефиксуРоли; +&НаКлиенте +Перем ПрефиксРоли; +&НаКлиенте +Перем ИсключенияИзПроверок; #КонецОбласти @@ -37,7 +43,7 @@ Возврат; КонецЕсли; - ОбъектыМетаданных = ОбъектыМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов); + ОбъектыМетаданных = ОбъектыМетаданных(ОтборПоПрефиксуОбъекта, ПрефиксОбъекта, ИсключенияИзПроверок); Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл Если ОбъектМетаданных.Значение.Количество() = 0 Тогда @@ -65,12 +71,16 @@ Возврат; КонецЕсли; - ПрефиксОбъектов = ""; - ВыводитьИсключения = Ложь; - ПроверятьОсновныеРоли = Истина; - ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); - Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); - Настройки = Объект.Настройки; + ПрефиксОбъекта = ""; + ОтборПоПрефиксуОбъекта = Ложь; + ПрефиксРоли = ""; + ОтборПоПрефиксуРоли = Ложь; + ИсключенияИзПроверок = Новый Структура; + ПроверятьОсновныеРоли = Истина; + + ПлагинНастроек = КонтекстЯдра.Плагин("Настройки"); + Объект.Настройки = ПлагинНастроек.ПолучитьНастройку(ПутьНастройки); + Настройки = Объект.Настройки; Если Не ЗначениеЗаполнено(Объект.Настройки) Тогда Объект.Настройки = Новый Структура(ПутьНастройки, Неопределено); @@ -81,12 +91,24 @@ ПроверятьОсновныеРоли = Настройки.ПроверятьОсновныеРоли; КонецЕсли; - Если Настройки.Свойство("Префикс") Тогда - ПрефиксОбъектов = ВРег(Настройки.Префикс); + Если Настройки.Свойство("ПрефиксОбъекта") Тогда + ПрефиксОбъекта = ВРег(Настройки.ПрефиксОбъекта); КонецЕсли; - Если Настройки.Свойство("ОтборПоПрефиксу") Тогда - ОтборПоПрефиксу = Настройки.ОтборПоПрефиксу; + Если Настройки.Свойство("ОтборПоПрефиксуОбъекта") Тогда + ОтборПоПрефиксуОбъекта = Настройки.ОтборПоПрефиксуОбъекта; + КонецЕсли; + + Если Настройки.Свойство("ПрефиксРоли") Тогда + ПрефиксРоли = ВРег(Настройки.ПрефиксРоли); + КонецЕсли; + + Если Настройки.Свойство("ОтборПоПрефиксуРоли") Тогда + ОтборПоПрефиксуРоли = Настройки.ОтборПоПрефиксуРоли; + КонецЕсли; + + Если Настройки.Свойство("ИсключенияИзПроверок") Тогда + ИсключенияИзПроверок = Настройки.ИсключенияИзПроверок; КонецЕсли; КонецПроцедуры @@ -98,13 +120,14 @@ &НаКлиенте Процедура ТестДолжен_ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных) Экспорт - Результат = ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ПроверятьОсновныеРоли); - Утверждения.Проверить(Результат = "", "Есть право на интерактивное удаление объектов:" + Результат); - + Результат = ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ОтборПоПрефиксуРоли, ПрефиксРоли, ПроверятьОсновныеРоли); + ШаблонСообщения = НСтр("ru = 'Есть право на интерактивное удаление объектов:%1'"); + Утверждения.Проверить(Результат = "", СтроковыеУтилиты.ПодставитьПараметрыВСтроку(ШаблонСообщения, Результат)); + КонецПроцедуры &НаСервереБезКонтекста -Функция ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ПроверятьОсновныеРоли) +Функция ПроверитьЧтоНетПраваНаИнтерактивноеУдаление(ПолноеИмяМетаданных, ОтборПоПрефиксуРоли, ПрефиксРоли, ПроверятьОсновныеРоли) ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяМетаданных); ЕстьПраво = Ложь; @@ -114,6 +137,9 @@ Если Не ПроверятьОсновныеРоли И Метаданные.ОсновныеРоли.Содержит(Роль) Тогда Продолжить; КонецЕсли; + Если ОтборПоПрефиксуРоли И Не СтрНачинаетсяС(ВРег(Роль.Имя), ВРег(ПрефиксРоли)) Тогда + Продолжить; + КонецЕсли; ЕстьПраво = ПравоДоступа("ИнтерактивноеУдаление", ОбъектМетаданных, Роль); Если ЕстьПраво Тогда Результат = Результат + Символы.ПС + Роль.Имя; @@ -129,7 +155,9 @@ #Область СлужебныеПроцедурыИФункции &НаСервереБезКонтекста -Функция ОбъектыМетаданных(ОтборПоПрефиксу, ПрефиксОбъектов) +Функция ОбъектыМетаданных(ОтборПоПрефиксуОбъекта, ПрефиксОбъекта, ИсключенияИзПроверок) + + ЛокальныйКонтекстЯдра = ВнешниеОбработки.Создать("xddTestRunner"); СтроковыеУтилиты = СтроковыеУтилиты(); Пояснение = НСтр("ru = 'Проверка права интерактивного удаления'"); @@ -146,18 +174,26 @@ Для Каждого Элемент Из ОбъектыМетаданных Цикл Для Каждого ОбъектМетаданных Из Метаданные[Элемент.Ключ] Цикл - Если ОтборПоПрефиксу И Не СтрНачинаетсяС(ВРег(ОбъектМетаданных.Имя), ВРег(ПрефиксОбъектов)) Тогда + ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя(); + Если ОтборПоПрефиксуОбъекта И Не СтрНачинаетсяС(ВРег(ОбъектМетаданных.Имя), ВРег(ПрефиксОбъекта)) Тогда Продолжить; КонецЕсли; - - ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ОбъектМетаданных.ПолноеИмя(), Пояснение); + Если ИсключенияИзПроверок.Свойство(Элемент.Ключ) + И ТипЗнч(ИсключенияИзПроверок[Элемент.Ключ]) = Тип("Массив") + И ЛокальныйКонтекстЯдра.ЕстьВИсключаемойКоллекции(ОбъектМетаданных.Имя, ИсключенияИзПроверок[Элемент.Ключ]) Тогда + Продолжить; + КонецЕсли; + // + ИмяТеста = СтроковыеУтилиты.ПодставитьПараметрыВСтроку("%1 [%2]", ПолноеИмяОбъекта, Пояснение); СтруктураЭлемента = Новый Структура; СтруктураЭлемента.Вставить("ИмяТеста", ИмяТеста); - СтруктураЭлемента.Вставить("ПолноеИмя", ОбъектМетаданных.ПолноеИмя()); + СтруктураЭлемента.Вставить("ПолноеИмя", ПолноеИмяОбъекта); ОбъектыМетаданных[Элемент.Ключ].Добавить(СтруктураЭлемента); КонецЦикла; КонецЦикла; + ЛокальныйКонтекстЯдра = Неопределено; + Возврат ОбъектыМетаданных; КонецФункции