Skip to content

Commit

Permalink
Дымовые тесты с использованием плагина ИтераторМетаданных
Browse files Browse the repository at this point in the history
  • Loading branch information
ImHunter committed Nov 25, 2018
1 parent 54b0dfd commit 544f453
Show file tree
Hide file tree
Showing 4 changed files with 232 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4">
<ExternalDataProcessor uuid="fd6d9ecc-2745-4e4c-b8bf-4d2bd5fe785b">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>c3831ec8-d8d5-4f93-8a22-f9bfae07327f</xr:ClassId>
<xr:ObjectId>0966cc50-c47b-497e-adc8-f21eebacff8d</xr:ObjectId>
</xr:ContainedObject>
<xr:GeneratedType name="ExternalDataProcessorObject.ПроверкаРежимаБлокировки" category="Object">
<xr:TypeId>40de5826-8f25-4b00-a777-0a1a8f271cee</xr:TypeId>
<xr:ValueId>8e434fe6-7ceb-4cf8-b1bf-61ccffcf22c0</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>ПроверкаРежимаБлокировки</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Проверка режима блокировки</v8:content>
</v8:item>
</Synonym>
<Comment/>
<DefaultForm/>
<AuxiliaryForm/>
</Properties>
<ChildObjects/>
</ExternalDataProcessor>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
Перем КонтекстЯдра;
Перем Ожидаем, ИтераторМетаданных;

Перем НаборТестов;

#Область Стандартный_интерфейс

Процедура Инициализация(КонтекстЯдраПараметр) Экспорт

КонтекстЯдра = КонтекстЯдраПараметр;
Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD");
ИтераторМетаданных = КонтекстЯдра.Плагин("ИтераторМетаданных");

КонецПроцедуры

Процедура ЗаполнитьНаборТестов(НаборТестовПараметр, КонтекстЯдраПараметр) Экспорт

НаборТестов = НаборТестовПараметр;
Инициализация(КонтекстЯдраПараметр);
ИтераторМетаданных.Инициализация(КонтекстЯдраПараметр);

ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Документы);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.БизнесПроцессы);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Задачи);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Справочники);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.РегистрыСведений);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Константы);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.РегистрыНакопления);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.РегистрыРасчета);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.РегистрыБухгалтерии);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.ПланыВидовХарактеристик);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.ПланыВидовРасчета);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Последовательности);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.ВнешниеИсточникиДанных);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.WebСервисы);

ИтераторМетаданных.Перечислить(ЭтотОбъект, "ПриСледующемОбъектеМетаданных", "ПриСледующемОбъектеМетаданных");

КонецПроцедуры

Процедура ПриСледующемОбъектеМетаданных(ОбъектМетаданных, Родитель) Экспорт

Если Родитель=Неопределено И ТипЗнч(ОбъектМетаданных)=Тип("Строка") Тогда

НаборТестов.НачатьГруппу("Проверка режима блокировки данных " + ОбъектМетаданных);

ИначеЕсли ОбъектМетаданных<>Неопределено Тогда

ПолноеИмяОбъекта = ОбъектМетаданных.ПолноеИмя();
Если СтрНачинаетсяС(ПолноеИмяОбъекта, "WebСервис") Тогда
Для Каждого Операция Из ОбъектМетаданных.Операции Цикл
ПараметрыТеста = НаборТестов.ПараметрыТеста(Операция, Родитель);
НаборТестов.Добавить("Тест_ПроверитьРежимБлокировкиОбъекта", ПараметрыТеста, "" + ОбъектМетаданных.ПолноеИмя() + "." + Операция.Имя);
КонецЦикла;
Иначе
ПараметрыТеста = НаборТестов.ПараметрыТеста(ОбъектМетаданных, Родитель);
НаборТестов.Добавить("Тест_ПроверитьРежимБлокировкиОбъекта", ПараметрыТеста, "" + ОбъектМетаданных.ПолноеИмя());
КонецЕсли;

КонецЕсли;

КонецПроцедуры

Процедура Тест_ПроверитьРежимБлокировкиОбъекта(ОбъектМетаданных, Родитель) Экспорт

РежимПроверен = ОбъектМетаданных.РежимУправленияБлокировкойДанных=Метаданные.РежимУправленияБлокировкойДанных;
Ожидаем.Что(РежимПроверен).ЕстьИстина();

КонецПроцедуры

Процедура ПередЗапускомТеста() Экспорт

КонецПроцедуры

Процедура ПослеЗапускаТеста() Экспорт

КонецПроцедуры

#КонецОбласти

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4">
<ExternalDataProcessor uuid="fd6d9ecc-2745-4e4c-b8bf-4d2bd5fe785b">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>c3831ec8-d8d5-4f93-8a22-f9bfae07327f</xr:ClassId>
<xr:ObjectId>0966cc50-c47b-497e-adc8-f21eebacff8d</xr:ObjectId>
</xr:ContainedObject>
<xr:GeneratedType name="ExternalDataProcessorObject.ПроверкаЧтенияНеАдминистраторами" category="Object">
<xr:TypeId>40de5826-8f25-4b00-a777-0a1a8f271cee</xr:TypeId>
<xr:ValueId>8e434fe6-7ceb-4cf8-b1bf-61ccffcf22c0</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>ПроверкаЧтенияНеАдминистраторами</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Проверка чтения не-администраторами</v8:content>
</v8:item>
</Synonym>
<Comment/>
<DefaultForm/>
<AuxiliaryForm/>
</Properties>
<ChildObjects/>
</ExternalDataProcessor>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
Перем КонтекстЯдра;
Перем Ожидаем, ИтераторМетаданных;

Перем НаборТестов;
Перем ПривилегированныеРоли;

#Область Стандартный_интерфейс

Процедура Инициализация(КонтекстЯдраПараметр) Экспорт

КонтекстЯдра = КонтекстЯдраПараметр;
Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD");

ПривилегированныеРоли = Новый Соответствие;
// Заполняем специализированные роли - это не администраторские роли и не общие роли на Чтение
ПривилегированныеРоли.Вставить(Метаданные.Роли["Администратор"], Истина);
ПривилегированныеРоли.Вставить(Метаданные.Роли["АдминНСИ"], Истина);
ПривилегированныеРоли.Вставить(Метаданные.Роли["Тестирование"], Истина);
ПривилегированныеРоли.Вставить(Метаданные.Роли["РазработкаКонфигурации"], Истина);
ПривилегированныеРоли.Вставить(Метаданные.Роли["Обмен"], Истина);
ПривилегированныеРоли.Вставить(Метаданные.Роли["Пользователь"], Истина); // общая роль на Чтение

ИтераторМетаданных = КонтекстЯдра.Плагин("ИтераторМетаданных");
ИтераторМетаданных.Инициализация(КонтекстЯдраПараметр); // Сброс реквизитов плагина. Необходимо сделать, т.к. плагин уже мог быть инициализирован другой тестовой обработкой
ИтераторМетаданных.ДополнятьЗависимымиОбъектами = Истина; // В принципе, можно и не дополнять. Проверял работу этого флага.

ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Документы);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Справочники);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.РегистрыСведений);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Константы);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.РегистрыНакопления);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.ПланыВидовХарактеристик);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.Задачи);
ИтераторМетаданных.ДопустимыеМетаданные.Добавить(Метаданные.БизнесПроцессы);

// При ДополнятьЗависимымиОбъектами = Истина, в объектах проверки появляются и перечисления.
// Но настройки прав для перечислений - нет. Поэтому Перечисления исключаем.
ИтераторМетаданных.ИсключаемыеМетаданные.Добавить(Метаданные.Перечисления);
// Спец.исключения, сделаны после обсуждения первых прогонов теста
ИтераторМетаданных.ИсключаемыеМетаданные.Добавить(Метаданные.Константы["РегистрироватьОткрытиеФорм"]);
ИтераторМетаданных.ИсключаемыеМетаданные.Добавить(Метаданные.Константы["НастройкиЭкспортаСобытийФорм"]);

КонецПроцедуры

Процедура ЗаполнитьНаборТестов(НаборТестовПараметр, КонтекстЯдраПараметр) Экспорт

НаборТестов = НаборТестовПараметр;
Инициализация(КонтекстЯдраПараметр);

ИтераторМетаданных.Перечислить(ЭтотОбъект, "ПриСледующемОбъектеМетаданных", "ПриСледующемОбъектеМетаданных");

КонецПроцедуры

Процедура ПриСледующемОбъектеМетаданных(ОбъектМетаданных, Родитель) Экспорт
ЗаголовокОбщаяЧасть = "Проверка доступа на Чтение Не-Администраторами";
Если Родитель=Неопределено И ТипЗнч(ОбъектМетаданных)=Тип("Строка") Тогда
НаборТестов.НачатьГруппу(ЗаголовокОбщаяЧасть + " " + ОбъектМетаданных);
ИначеЕсли ОбъектМетаданных<>Неопределено Тогда
ПараметрыТеста = НаборТестов.ПараметрыТеста(ОбъектМетаданных, Родитель);
ЗаголовокТеста = "" + ОбъектМетаданных.ПолноеИмя() + ": " + ЗаголовокОбщаяЧасть;
НаборТестов.Добавить("Тест_ПроверитьНеАдминистраторскиеПраваНаЧтение", ПараметрыТеста, ЗаголовокТеста);
КонецЕсли;

КонецПроцедуры

Процедура Тест_ПроверитьНеАдминистраторскиеПраваНаЧтение(ОбъектМетаданных, Родитель) Экспорт

ЧтениеДоступно = Ложь;
Для Каждого ТекРоль Из Метаданные.Роли Цикл

Если ПривилегированныеРоли.Получить(ТекРоль)<>Неопределено Тогда
Продолжить;
КонецЕсли;

ПараметрыДоступаОбъекта = ПараметрыДоступа("Read", ОбъектМетаданных, , ТекРоль);
Если ПараметрыДоступаОбъекта.Доступность Тогда
ЧтениеДоступно = Истина;
Прервать;
КонецЕсли;

КонецЦикла;

Ожидаем.Что(ЧтениеДоступно).ЕстьИстина();

КонецПроцедуры

Процедура ПередЗапускомТеста() Экспорт

КонецПроцедуры

Процедура ПослеЗапускаТеста() Экспорт

КонецПроцедуры

#КонецОбласти

0 comments on commit 544f453

Please sign in to comment.