mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-01-26 05:37:27 +02:00
YAX: тесты для Telegram API
This commit is contained in:
parent
9e27f8eafa
commit
e5971481c7
@ -21,7 +21,6 @@
|
||||
// SOFTWARE.
|
||||
|
||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
#Область ДанныеИНастройка
|
||||
@ -129,8 +128,7 @@
|
||||
СтруктураПараметровВыходная.Вставить("IDСообщения", СтруктураСообщения[MessageId]);
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата", СтруктураЧата[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение", СтруктураСообщения["text"]);
|
||||
СтруктураПараметровВыходная.Вставить("Дата"
|
||||
, Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения["date"]);
|
||||
СтруктураПараметровВыходная.Вставить("Дата", Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения["date"]);
|
||||
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен", Ложь);
|
||||
|
||||
@ -146,11 +144,10 @@
|
||||
СтруктураПараметровВыходная.Вставить("IDСообщения", "");
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата", СтруктураЧата[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение", СтруктураСообщения["new_chat_member"]["status"]);
|
||||
СтруктураПараметровВыходная.Вставить("Дата"
|
||||
, Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения["date"]);
|
||||
СтруктураПараметровВыходная.Вставить("Дата", Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения["date"]);
|
||||
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен"
|
||||
, ?(СтруктураСообщения["new_chat_member"]["status"] = "kicked", Истина, Ложь));
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен", ?(СтруктураСообщения["new_chat_member"]["status"]
|
||||
= "kicked", Истина, Ложь));
|
||||
|
||||
ИначеЕсли СтруктураПараметровВходная.Свойство("callback_query") Тогда
|
||||
|
||||
@ -164,8 +161,7 @@
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата", СтруктураСообщения[Message][Chat][Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение", СтруктураСообщения["data"]);
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен", Ложь);
|
||||
СтруктураПараметровВыходная.Вставить("Дата"
|
||||
, Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения[Message]["date"]);
|
||||
СтруктураПараметровВыходная.Вставить("Дата", Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения[Message]["date"]);
|
||||
|
||||
Иначе
|
||||
|
||||
@ -314,11 +310,7 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный, HTTPОтвет - Ответ сервера Telegram
|
||||
Функция ОтправитьМедиагруппу(Знач Токен
|
||||
, Знач IDЧата
|
||||
, Знач Текст
|
||||
, Знач СоответствиеФайлов
|
||||
, Знач Клавиатура = "") Экспорт
|
||||
Функция ОтправитьМедиагруппу(Знач Токен, Знач IDЧата, Знач Текст, Знач СоответствиеФайлов, Знач Клавиатура = "") Экспорт
|
||||
|
||||
// СоответствиеФайлов
|
||||
// Ключ - Файл, Значение - Тип
|
||||
@ -343,9 +335,8 @@
|
||||
Если Не ТипЗнч(ТекущийФайл.Ключ) = Тип("ДвоичныеДанные") Тогда
|
||||
ДД = Новый ДвоичныеДанные(ТекущийФайл.Ключ);
|
||||
ЭтотФайл = Новый Файл(ТекущийФайл.Ключ);
|
||||
ИмяМедиа = ТекущийФайл.Значение
|
||||
+ Строка(Счетчик)
|
||||
+ ?(ТекущийФайл.Значение = "document", ЭтотФайл.Расширение, "");
|
||||
ИмяМедиа = ТекущийФайл.Значение + Строка(Счетчик) + ?(ТекущийФайл.Значение = "document",
|
||||
ЭтотФайл.Расширение, "");
|
||||
ПолноеИмяМедиа = СтрЗаменить(ИмяМедиа, ".", "___");
|
||||
Иначе
|
||||
ДД = ТекущийФайл.Ключ;
|
||||
@ -371,9 +362,8 @@
|
||||
|
||||
Параметры_.Вставить("media", OPI_Инструменты.JSONСтрокой(Медиа));
|
||||
|
||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot"
|
||||
+ Токен
|
||||
+ "/sendMediaGroup", Параметры_, СтруктураФайлов, "mixed");
|
||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot" + Токен + "/sendMediaGroup", Параметры_,
|
||||
СтруктураФайлов, "mixed");
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -562,11 +552,8 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция СоздатьСсылкуПриглашение(Знач Токен
|
||||
, Знач IDЧата
|
||||
, Знач Заголовок = ""
|
||||
, Знач ДатаИстечения = ""
|
||||
, Знач ЛимитПользователей = 0) Экспорт
|
||||
Функция СоздатьСсылкуПриглашение(Знач Токен, Знач IDЧата, Знач Заголовок = "", Знач ДатаИстечения = "",
|
||||
Знач ЛимитПользователей = 0) Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
@ -679,8 +666,7 @@
|
||||
Ключ = "WebAppData";
|
||||
Хэш = "";
|
||||
|
||||
Результат = OPI_Криптография.HMACSHA256(ПолучитьДвоичныеДанныеИзСтроки(Ключ)
|
||||
, ПолучитьДвоичныеДанныеИзСтроки(Токен));
|
||||
Результат = OPI_Криптография.HMACSHA256(ПолучитьДвоичныеДанныеИзСтроки(Ключ), ПолучитьДвоичныеДанныеИзСтроки(Токен));
|
||||
|
||||
ТЗнач = Новый ТаблицаЗначений;
|
||||
ТЗнач.Колонки.Добавить("Ключ");
|
||||
@ -740,9 +726,7 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - JSON клавиатуры
|
||||
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок
|
||||
, Знач ПодСообщением = Ложь
|
||||
, Знач ОднаПодОдной = Истина) Экспорт
|
||||
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок, Знач ПодСообщением = Ложь, Знач ОднаПодОдной = Истина) Экспорт
|
||||
|
||||
Если ОднаПодОдной Тогда
|
||||
|
||||
@ -829,9 +813,7 @@
|
||||
СтруктураФайлов = Новый Структура;
|
||||
СтруктураФайлов.Вставить(Вид + Расширение, Файл);
|
||||
|
||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot"
|
||||
+ Токен
|
||||
+ Метод, Параметры_, СтруктураФайлов, "mixed");
|
||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot" + Токен + Метод, Параметры_, СтруктураФайлов, "mixed");
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
|
@ -16,7 +16,12 @@
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьВидео" , "Отправить видео")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьАудио" , "Отправить аудио")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьДокумент" , "Отправить документ")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьГифку" , "Отправить гифку");
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьГифку" , "Отправить гифку")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьМедиагруппу" , "Отправить медиагруппу")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьМестоположение" , "Отправить местоположение")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьКонтакт" , "Отправить контакт")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьОпрос" , "Отправить опрос")
|
||||
.ДобавитьСерверныйТест("Телеграм_ПереслатьСообщение" , "Переслать сообщение");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -94,6 +99,9 @@
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст));
|
||||
|
||||
IDСообщения = OPI_Инструменты.ЧислоВСтроку(МассивРезультатов[1]["result"]["message_id"]);
|
||||
ЗаписатьПараметр("Телеграм_IDСообщенияКанала", IDСообщения);
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
@ -143,19 +151,18 @@
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
Текст = "Сообщение из автоматического теста";
|
||||
Картинка = ПолучитьДвоичные("Видео");
|
||||
Видео = ПолучитьДвоичные("Видео");
|
||||
ИВФ = ПолучитьИмяВременногоФайла("mp4");
|
||||
Картинка.Записать(ИВФ);
|
||||
Видео.Записать(ИВФ);
|
||||
|
||||
МассивРезультатов = Новый Массив;
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDЧата , Текст, Картинка));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDКанала, Текст, Картинка));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDЧата , Текст, Видео));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDКанала, Текст, Видео));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDЧата , Текст, ИВФ));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDКанала, Текст, ИВФ));
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
//@skip-warning
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
@ -263,6 +270,143 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ОтправитьМедиагруппу() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
Текст = "Сообщение из автоматического теста";
|
||||
|
||||
Картинка = ПолучитьДвоичные("Картинка");
|
||||
ИВФ_Картинка = ПолучитьИмяВременногоФайла("png");
|
||||
Картинка.Записать(ИВФ_Картинка);
|
||||
|
||||
Видео = ПолучитьДвоичные("Видео");
|
||||
ИВФ_Видео = ПолучитьИмяВременногоФайла("mp4");
|
||||
Видео.Записать(ИВФ_Видео);
|
||||
|
||||
МедиагруппаЧат = Новый Соответствие;
|
||||
МедиагруппаЧат.Вставить(Картинка , "photo");
|
||||
МедиагруппаЧат.Вставить(ИВФ_Видео, "video");
|
||||
|
||||
МедиагруппаКанал = Новый Соответствие;
|
||||
МедиагруппаКанал.Вставить(ИВФ_Картинка, "photo");
|
||||
МедиагруппаКанал.Вставить(Видео , "video");
|
||||
|
||||
МассивРезультатов = Новый Массив;
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьМедиагруппу(Токен, IDЧата, Текст, МедиагруппаЧат));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьМедиагруппу(Токен, IDКанала, Текст, МедиагруппаКанал));
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result").ИмеетТип("Массив").ИмеетДлину(2)
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
УдалитьФайлы(ИВФ_Картинка);
|
||||
УдалитьФайлы(ИВФ_Видео);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ОтправитьМестоположение() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
Ширина = "48.87373649724122";
|
||||
Долгота = "48.87373649724122";
|
||||
|
||||
МассивРезультатов = Новый Массив;
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьМестоположение(Токен, IDЧата , Ширина, Долгота));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьМестоположение(Токен, IDКанала, Ширина, Долгота));
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result.location").ИмеетТип("Соответствие").Заполнено();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ОтправитьКонтакт() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
Имя = "Петр";
|
||||
Фамилия = "Петров";
|
||||
Телефон = "88005553535";
|
||||
|
||||
МассивРезультатов = Новый Массив;
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКонтакт(Токен, IDЧата , Имя, Фамилия, Телефон));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКонтакт(Токен, IDКанала, Имя, Фамилия, Телефон));
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result.contact").ИмеетТип("Соответствие").Заполнено()
|
||||
.Свойство("result.contact.first_name").Равно(Имя);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ОтправитьОпрос() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
|
||||
Вопрос = "Какой ваш любимый цвет?";
|
||||
|
||||
МассивОтветов = Новый Массив;
|
||||
МассивОтветов.Добавить("Красный");
|
||||
МассивОтветов.Добавить("Желтый");
|
||||
МассивОтветов.Добавить("Зеленый");
|
||||
|
||||
МассивРезультатов = Новый Массив;
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьОпрос(Токен, IDЧата , Вопрос, МассивОтветов, Ложь));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьОпрос(Токен, IDКанала, Вопрос, МассивОтветов, Истина));
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result.poll").ИмеетТип("Соответствие").Заполнено()
|
||||
.Свойство("result.poll.question").Равно(Вопрос);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ПереслатьСообщение() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
IDСообщения = ПолучитьПараметр("Телеграм_IDСообщенияКанала");
|
||||
|
||||
ЮТест.ОжидаетЧто(OPI_Telegram.ПереслатьСообщение(Токен, IDСообщения, IDКанала, IDЧата))
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result.forward_origin.message_id").Равно(Число(IDСообщения));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -308,7 +452,13 @@
|
||||
ИмяРеквизита = "Значение";
|
||||
|
||||
ЭлементСпр = Справочники[ИмяСправочника].НайтиПоНаименованию(Параметр);
|
||||
|
||||
Если ЗначениеЗаполнено(ЭлементСпр) Тогда
|
||||
ОбъектСпр = ЭлементСпр.ПолучитьОбъект();
|
||||
Иначе
|
||||
ОбъектСпр = Справочники[ИмяСправочника].СоздатьЭлемент();
|
||||
ОбъектСпр.Наименование = Параметр;
|
||||
КонецЕсли;
|
||||
|
||||
ОбъектСпр[ИмяРеквизита] = Значение;
|
||||
ОбъектСпр.Записать();
|
||||
|
Loading…
x
Reference in New Issue
Block a user