diff --git a/OPI/DT-INF/PROJECT.PMF b/OPI/DT-INF/PROJECT.PMF index 93a7f18afe..690880282e 100644 --- a/OPI/DT-INF/PROJECT.PMF +++ b/OPI/DT-INF/PROJECT.PMF @@ -1,3 +1,3 @@ Manifest-Version: 1.0 -Runtime-Version: 8.3.18 -Base-Project: OPI_Conf +Runtime-Version: 8.3.15 +Base-Project: OpenIntegrations diff --git a/OPI/src/CommonModules/OPI_Telegram/Module.bsl b/OPI/src/CommonModules/OPI_Telegram/Module.bsl index 02bc2a15c3..c5ba25f6ee 100644 --- a/OPI/src/CommonModules/OPI_Telegram/Module.bsl +++ b/OPI/src/CommonModules/OPI_Telegram/Module.bsl @@ -72,6 +72,20 @@ КонецФункции +// Удалить Webhook. +// +// Параметры: +// Токен - Строка - Токен +// +// Возвращаемое значение: +// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram +Функция УдалитьWebhook(Знач Токен) Экспорт + + Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/deleteWebHook"); + Возврат Ответ; + +КонецФункции + // Обработать данные, полученные на Webhook. // // Параметры: diff --git a/OPI/src/CommonModules/YAX_Тесты/Module.bsl b/OPI/src/CommonModules/YAX_Тесты/Module.bsl new file mode 100644 index 0000000000..592f2f006b --- /dev/null +++ b/OPI/src/CommonModules/YAX_Тесты/Module.bsl @@ -0,0 +1,318 @@ +//Набор тестов для YAxUnit +//@skip-check undefined-variable + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты + .ДобавитьТестовыйНабор("Телеграм") + .ДобавитьСерверныйТест("Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота") + .ДобавитьСерверныйТест("Телеграм_ПолучитьОбновления" , "Получить обновления") + .ДобавитьСерверныйТест("Телеграм_УстановитьWebhook" , "Установить Webhook") + .ДобавитьСерверныйТест("Телеграм_УдалитьWebhook" , "Удалить Webhook") + .ДобавитьСерверныйТест("Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение") + .ДобавитьСерверныйТест("Телеграм_ОтправитьКартинку" , "Отправить картинку") + .ДобавитьСерверныйТест("Телеграм_ОтправитьВидео" , "Отправить видео") + .ДобавитьСерверныйТест("Телеграм_ОтправитьАудио" , "Отправить аудио") + .ДобавитьСерверныйТест("Телеграм_ОтправитьДокумент" , "Отправить документ") + .ДобавитьСерверныйТест("Телеграм_ОтправитьГифку" , "Отправить гифку"); + +КонецПроцедуры + +#Область Тесты + +#Область Telegram + +Процедура Телеграм_ПолучитьИнформациюБота() Экспорт + + Токен = ПолучитьПараметр("Телеграм_Токен"); + Результат = OPI_Telegram.ПолучитьИнформациюБота(Токен); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Соответствие") + .Заполнено() + .Свойство("ok").Равно(Истина) + .Свойство("result.username").Заполнено(); + +КонецПроцедуры + +Процедура Телеграм_ПолучитьОбновления() Экспорт + + Токен = ПолучитьПараметр("Телеграм_Токен"); + Результат = OPI_Telegram.ПолучитьОбновления(Токен); + + OPI_Telegram.УдалитьWebhook(Токен); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Соответствие") + .Заполнено() + .Свойство("ok").Равно(Истина) + .Свойство("result").ИмеетТип(Тип("Массив")); + +КонецПроцедуры + +Процедура Телеграм_УстановитьWebhook() Экспорт + + Токен = ПолучитьПараметр("Телеграм_Токен"); + URL = ПолучитьПараметр("Телеграм_URL"); + + Результат = OPI_Telegram.УстановитьWebhook(Токен, URL); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Соответствие") + .Заполнено() + .Свойство("ok").Равно(Истина) + .Свойство("result").Равно(Истина) + .Свойство("description").Равно("Webhook was set"); + +КонецПроцедуры + +Процедура Телеграм_УдалитьWebhook() Экспорт + + Токен = ПолучитьПараметр("Телеграм_Токен"); + + Результат = OPI_Telegram.УдалитьWebhook(Токен); + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Соответствие") + .Заполнено() + .Свойство("ok").Равно(Истина) + .Свойство("result").Равно(Истина) + .Свойство("description").Равно("Webhook was deleted"); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьТекстовоеСообщение() Экспорт + + Токен = ПолучитьПараметр("Телеграм_Токен"); + IDЧата = ПолучитьПараметр("Телеграм_Чат"); + IDКанала = ПолучитьПараметр("Телеграм_Канал"); + Текст = "Сообщение из автоматического теста"; + + МассивРезультатов = Новый Массив; + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст)); + + Для Каждого Результат Из МассивРезультатов Цикл + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Соответствие") + .Заполнено() + .Свойство("ok").Равно(Истина) + .Свойство("result.text").Равно(Текст); + + КонецЦикла; + +КонецПроцедуры + +Процедура Телеграм_ОтправитьКартинку() Экспорт + + Токен = ПолучитьПараметр("Телеграм_Токен"); + IDЧата = ПолучитьПараметр("Телеграм_Чат"); + IDКанала = ПолучитьПараметр("Телеграм_Канал"); + Текст = "Сообщение из автоматического теста"; + Картинка = ПолучитьДвоичные("Картинка"); + ИВФ = ПолучитьИмяВременногоФайла("png"); + Картинка.Записать(ИВФ); + + МассивРезультатов = Новый Массив; + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКартинку(Токен, IDЧата , Текст, Картинка)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКартинку(Токен, IDКанала, Текст, Картинка)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКартинку(Токен, IDЧата , Текст, ИВФ)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКартинку(Токен, IDКанала, Текст, ИВФ)); + + Для Каждого Результат Из МассивРезультатов Цикл + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Соответствие") + .Заполнено() + .Свойство("ok").Равно(Истина) + .Свойство("result.caption").Равно(Текст) + .Свойство("result.photo").ИмеетТип(Тип("Массив")); + + КонецЦикла; + + УдалитьФайлы(ИВФ); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьВидео() Экспорт + + Токен = ПолучитьПараметр("Телеграм_Токен"); + IDЧата = ПолучитьПараметр("Телеграм_Чат"); + IDКанала = ПолучитьПараметр("Телеграм_Канал"); + Текст = "Сообщение из автоматического теста"; + Картинка = ПолучитьДвоичные("Видео"); + ИВФ = ПолучитьИмяВременногоФайла("mp4"); + Картинка.Записать(ИВФ); + + МассивРезультатов = Новый Массив; + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDЧата , Текст, Картинка)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDКанала, Текст, Картинка)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDЧата , Текст, ИВФ)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDКанала, Текст, ИВФ)); + + Для Каждого Результат Из МассивРезультатов Цикл + + //@skip-warning + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Соответствие") + .Заполнено() + .Свойство("ok").Равно(Истина) + .Свойство("result.caption").Равно(Текст) + .Свойство("result.video.mime_type").Равно("video/mp4"); + + КонецЦикла; + + УдалитьФайлы(ИВФ); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьАудио() Экспорт + + Токен = ПолучитьПараметр("Телеграм_Токен"); + IDЧата = ПолучитьПараметр("Телеграм_Чат"); + IDКанала = ПолучитьПараметр("Телеграм_Канал"); + Текст = "Сообщение из автоматического теста"; + Аудио = ПолучитьДвоичные("Аудио"); + ИВФ = ПолучитьИмяВременногоФайла("mp3"); + Аудио.Записать(ИВФ); + + МассивРезультатов = Новый Массив; + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьАудио(Токен, IDЧата , Текст, Аудио)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьАудио(Токен, IDКанала, Текст, Аудио)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьАудио(Токен, IDЧата , Текст, ИВФ)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьАудио(Токен, IDКанала, Текст, ИВФ)); + + Для Каждого Результат Из МассивРезультатов Цикл + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Соответствие") + .Заполнено() + .Свойство("ok").Равно(Истина) + .Свойство("result.caption").Равно(Текст) + .Свойство("result.audio.mime_type").Равно("audio/mpeg"); + + КонецЦикла; + + УдалитьФайлы(ИВФ); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьДокумент() Экспорт + + Токен = ПолучитьПараметр("Телеграм_Токен"); + IDЧата = ПолучитьПараметр("Телеграм_Чат"); + IDКанала = ПолучитьПараметр("Телеграм_Канал"); + Текст = "Сообщение из автоматического теста"; + Документ = ПолучитьДвоичные("Документ"); + ИВФ = ПолучитьИмяВременногоФайла("docx"); + Документ.Записать(ИВФ); + + МассивРезультатов = Новый Массив; + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьДокумент(Токен, IDЧата , Текст, Документ)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьДокумент(Токен, IDКанала, Текст, Документ)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьДокумент(Токен, IDЧата , Текст, ИВФ)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьДокумент(Токен, IDКанала, Текст, ИВФ)); + + Для Каждого Результат Из МассивРезультатов Цикл + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Соответствие") + .Заполнено() + .Свойство("ok").Равно(Истина) + .Свойство("result.caption").Равно(Текст) + .Свойство("result.document").ИмеетТип("Соответствие").Заполнено(); + + КонецЦикла; + + УдалитьФайлы(ИВФ); + +КонецПроцедуры + +Процедура Телеграм_ОтправитьГифку() Экспорт + + Токен = ПолучитьПараметр("Телеграм_Токен"); + IDЧата = ПолучитьПараметр("Телеграм_Чат"); + IDКанала = ПолучитьПараметр("Телеграм_Канал"); + Текст = "Сообщение из автоматического теста"; + Гифка = ПолучитьДвоичные("Гифка"); + ИВФ = ПолучитьИмяВременногоФайла("gif"); + Гифка.Записать(ИВФ); + + МассивРезультатов = Новый Массив; + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьГифку(Токен, IDЧата , Текст, Гифка)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьГифку(Токен, IDКанала, Текст, Гифка)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьГифку(Токен, IDЧата , Текст, ИВФ)); + МассивРезультатов.Добавить(OPI_Telegram.ОтправитьГифку(Токен, IDКанала, Текст, ИВФ)); + + Для Каждого Результат Из МассивРезультатов Цикл + + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Соответствие") + .Заполнено() + .Свойство("ok").Равно(Истина) + .Свойство("result.caption").Равно(Текст) + .Свойство("result.document").ИмеетТип("Соответствие").Заполнено() + .Свойство("result.animation.mime_type").Равно("video/mp4"); + + КонецЦикла; + + УдалитьФайлы(ИВФ); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ПолучитьПараметр(Параметр) + + ИмяСправочника = "ЮТПараметры"; + ИмяРеквизита = "Значение"; + + Возврат ПолучитьЗначение(Параметр, ИмяСправочника, ИмяРеквизита); + +КонецФункции + +Функция ПолучитьДвоичные(Имя) + + ИмяСправочника = "ЮТФайлы"; + ИмяРеквизита = "Значение"; + + Возврат ПолучитьЗначение(Имя, ИмяСправочника, ИмяРеквизита); + +КонецФункции + +Функция ПолучитьЗначение(Параметр, ИмяСправочника, ИмяРеквизита) + + ЭлементСпр = Справочники[ИмяСправочника].НайтиПоНаименованию(Параметр); + Значение = ЭлементСпр[ИмяРеквизита]; + + Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда + Значение = Значение.Получить(); + КонецЕсли; + + Возврат Значение; + +КонецФункции + +Процедура ЗаписатьПараметр(Параметр, Значение) + + ИмяСправочника = "ЮТПараметры"; + ИмяРеквизита = "Значение"; + + ЭлементСпр = Справочники[ИмяСправочника].НайтиПоНаименованию(Параметр); + ОбъектСпр = ЭлементСпр.ПолучитьОбъект(); + + ОбъектСпр[ИмяРеквизита] = Значение; + ОбъектСпр.Записать(); + +КонецПроцедуры + +#КонецОбласти diff --git a/OPI/src/CommonModules/YAX_Тесты/YAX_Тесты.mdo b/OPI/src/CommonModules/YAX_Тесты/YAX_Тесты.mdo new file mode 100644 index 0000000000..ec49e9a8ee --- /dev/null +++ b/OPI/src/CommonModules/YAX_Тесты/YAX_Тесты.mdo @@ -0,0 +1,11 @@ + + + YAX_Тесты + + ru + Тесты для YaxUnit (ОПИ) + + true + true + true + diff --git a/OPI/src/Configuration/Configuration.mdo b/OPI/src/Configuration/Configuration.mdo index a175472702..691501960a 100644 --- a/OPI/src/Configuration/Configuration.mdo +++ b/OPI/src/Configuration/Configuration.mdo @@ -9,7 +9,6 @@ Checked Checked - Checked Checked @@ -28,7 +27,6 @@ Russian Bayselonarrend 1.1.0 - Language.Русский ru Открытый пакет интеграций - набор библиотек для интеграции с некоторыми популярными API для 1C:Enterprise. Он состоит из общих модулей, каждый из которых отвечает за свой API, а также нескольких модулей-инструментов, общих для всех. @@ -41,11 +39,11 @@ ru https://github.com/Bayselonarrend/OpenIntegrations - + 8.3.15 + Русский Adopted - Checked Checked ru @@ -59,4 +57,5 @@ CommonModule.OPI_Криптография CommonModule.OPI_YandexID CommonModule.OPI_YandexDisk + CommonModule.YAX_Тесты