// MIT License // Copyright (c) 2023 Anton Tsitavets // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // https://github.com/Bayselonarrend/OpenIntegrations // BSLLS:LatinAndCyrillicSymbolInWord-off // BSLLS:IncorrectLineBreak-off // Раскомментировать, если выполняется OneScript #Использовать "./internal" #Использовать asserts // BSLLS:Typo-off #Область СлужебныйПрограммныйИнтерфейс Функция ОжидаетЧто(Значение) Экспорт Попытка Модуль = ПолучитьОбщийМодуль("ЮТест"); Ожидаем = ТипЗнч(Модуль) = Тип("ОбщийМодуль"); Возврат Модуль.ОжидаетЧто(Значение); Исключение Возврат Ожидаем.Что(Значение); КонецПопытки; КонецФункции Функция СформироватьТестыЯкс() Экспорт Модуль = ПолучитьОбщийМодуль("ЮТТесты"); МассивРазделов = ПолучитьМассивРазделовТестирования(); ТаблицаТестов = ПолучитьТаблицуТестов(); Для Каждого Раздел Из МассивРазделов Цикл Отбор = Новый Структура("Раздел", Раздел); ТестыРаздела = ТаблицаТестов.НайтиСтроки(Отбор); Набор = Модуль.ДобавитьТестовыйНабор(Раздел); Для Каждого Тест Из ТестыРаздела Цикл Набор.ДобавитьСерверныйТест(Тест.Метод, Тест.Синоним); КонецЦикла; КонецЦикла; Возврат ""; КонецФункции Функция СформироватьТестыАссертс() Экспорт ТаблицаТестов = ПолучитьТаблицуТестов(); МассивТестов = Новый Массив; Для Каждого Тест Из ТаблицаТестов Цикл МассивТестов.Добавить(Тест.Метод); КонецЦикла; Возврат МассивТестов; КонецФункции Функция ПолучитьПараметр(Параметр) Экспорт Путь = ПутьКФайлуДанных(); Возврат ПолучитьЗначениеИзФайла(Параметр, Путь); КонецФункции Функция ПолучитьДвоичные(Параметр) Экспорт Путь = ПутьКФайлуДанных(); ПараметрЛокальный = Параметр + "Локальный"; ЗначениеОсновной = ПолучитьЗначениеИзФайла(Параметр , Путь); ЗначениеЛокальный = ПолучитьЗначениеИзФайла(ПараметрЛокальный, Путь); ФайлЛокальный = Новый Файл(ЗначениеЛокальный); Если ФайлЛокальный.Существует() Тогда Значение = Новый ДвоичныеДанные(ЗначениеЛокальный); Иначе Значение = ЗначениеОсновной; КонецЕсли; Если ТипЗнч(Значение) = Тип("Строка") Тогда Значение = ПолучитьФайлПути(Значение, ПараметрЛокальный); КонецЕсли; Возврат Значение; КонецФункции Функция ПолучитьФайлПути(Знач Путь, ПараметрЛокальный, Знач СохранятьЛокально = Истина) Экспорт Если СтрНайти(Путь, "http") > 0 Или СтрНайти(Путь, "www") > 0 Тогда ИВФ = ПолучитьИмяВременногоФайла(); КопироватьФайл(Путь, ИВФ); Путь = ИВФ; Двоичные = Новый ДвоичныеДанные(Путь); Если СохранятьЛокально Тогда ЗаписатьПараметр(ПараметрЛокальный, ИВФ); Иначе УдалитьФайлы(ИВФ); КонецЕсли; Иначе Двоичные = Новый ДвоичныеДанные(Путь); КонецЕсли; Возврат Двоичные; КонецФункции Процедура ЗаписатьПараметр(Параметр, Значение) Экспорт Путь = ПутьКФайлуДанных(); ЗаписатьПараметрВФайл(Параметр, Значение, Путь); КонецПроцедуры Процедура ЗаписатьЛог(Знач Результат, Знач Вид, Знач Метод) Экспорт СоответствиеФайлов = СоответствиеФайловЛога(Вид); ПутьЛога = СоответствиеФайлов[Вид]; ФайлЛога = Новый Файл(ПутьЛога); ТекстовыйДокумент = Новый ТекстовыйДокумент; Если ФайлЛога.Существует() Тогда ТекстовыйДокумент.Прочитать(ПутьЛога); КонецЕсли; Шапка = Строка(OPI_Инструменты.ПолучитьТекущуюДату()) + " | " + Метод; Данные = " " + OPI_Инструменты.JSONСтрокой(Результат); ТекстовыйДокумент.ДобавитьСтроку(Шапка); ТекстовыйДокумент.ДобавитьСтроку(Символы.ПС); ТекстовыйДокумент.ДобавитьСтроку(Данные); ТекстовыйДокумент.ДобавитьСтроку(Символы.ПС); ТекстовыйДокумент.ДобавитьСтроку("---------------------------------"); ТекстовыйДокумент.ДобавитьСтроку(Символы.ПС); ТекстовыйДокумент.Записать(ПутьЛога); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции Функция ПолучитьЗначениеИзФайла(Параметр, Путь) Значения = OPI_Инструменты.ПрочитатьJSONФайл(Путь); Возврат ?(Значения.Свойство(Параметр), Значения[Параметр], ""); КонецФункции Функция ПутьКФайлуДанных() ПутьРепозитория = "./data.json"; ПутьЛокальный = "C:\GDrive\Мой диск\data.json"; ФайлРепозитория = Новый Файл(ПутьРепозитория); Если ФайлРепозитория.Существует() Тогда Путь = ПутьРепозитория; Иначе Путь = ПутьЛокальный; КонецЕсли; Возврат Путь; // BSLLS:UsingHardcodePath-off КонецФункции Функция ПолучитьМассивРазделовТестирования() МассивРазделов = Новый Массив; МассивРазделов.Добавить("Телеграм"); МассивРазделов.Добавить("ВКонтакте"); МассивРазделов.Добавить("Viber"); МассивРазделов.Добавить("Twitter"); МассивРазделов.Добавить("Яндекс.Диск"); МассивРазделов.Добавить("Google Workspace"); МассивРазделов.Добавить("Google Calendar"); МассивРазделов.Добавить("Google Drive"); Возврат МассивРазделов; КонецФункции Функция ПолучитьТаблицуТестов() Телеграм = "Телеграм"; ВКонтакте = "ВКонтакте"; ЯДиск = "Яндекс.Диск"; Календарь = "Google Calendar"; Твиттер = "Twitter"; Вайбер = "Viber"; Драйв = "Google Drive"; ВСпейс = "Google Workspace"; ТаблицаТестов = Новый ТаблицаЗначений; ТаблицаТестов.Колонки.Добавить("Метод"); ТаблицаТестов.Колонки.Добавить("Синоним"); ТаблицаТестов.Колонки.Добавить("Раздел"); НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьИнформациюБота" , "Получить информацию бота" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьОбновления" , "Получить обновления" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_УстановитьWebhook" , "Установить Webhook" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_УдалитьWebhook" , "Удалить Webhook" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьКартинку" , "Отправить картинку" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьВидео" , "Отправить видео" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьАудио" , "Отправить аудио" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьДокумент" , "Отправить документ" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьГифку" , "Отправить гифку" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьМедиагруппу" , "Отправить медиагруппу" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьМестоположение" , "Отправить местоположение" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьКонтакт" , "Отправить контакт" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОтправитьОпрос" , "Отправить опрос" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ПереслатьСообщение" , "Переслать сообщение" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_БанРазбан" , "Бан/Разбан" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_СоздатьСсылкуПриглашение" , "Создать ссылку-приглашение" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ЗакрепитьОткрепитьСообщение" , "Закрепить/Открепить сообщение" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьЧислоУчастников" , "Получить число участников" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ПолучитьСписокАватаровФорума", "Получить список аватаров форума", Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_СоздатьУдалитьТемуФорума" , "Создать/Удалить тему форума" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ОткрытьЗакрытьГлавнуюТему" , "Открыть/Закрыть главную тему" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_ИзменитьИмяГлавнойТемы" , "Изменить имя главной темы" , Телеграм); НовыйТест(ТаблицаТестов, "Телеграм_СкрытьПоказатьГлавнуюТему" , "Скрыть/Показать главную тему" , Телеграм); НовыйТест(ТаблицаТестов, "ВК_СоздатьСсылкуТокена" , "Создать ссылку получения токена", ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_СоздатьУдалитьПост" , "Создать/Удалить пост" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_СоздатьОпрос" , "Создать опрос" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_СохранитьУдалитьКартинку" , "Добавить/Удалить картинку" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_СоздатьИсторию" , "Создать историю" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_МетодыОбсуждений" , "Действия с обсуждениями" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_ЛайкРепостКоммент" , "Лайк/Репост/Комментарий" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_ПолучитьСтатистику" , "Получить статистику" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_ПолучитьСтатистикуПостов" , "Получить статистику постов" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_СоздатьРекламнуюКампанию" , "Создать рекламную кампанию" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_ОтправитьСообщение" , "Отправить сообщение" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_ПолучитьКатегорииТоваров" , "Получить категории товаров" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_СоздатьТоварПодборку" , "Создать товар и подборку" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_СоздатьТоварСоСвойствами" , "Создать товар со свойствами" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокТоваров" , "Получить список товаров" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокПодборок" , "Получить список подборок" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокСвойств" , "Получить список свойств" , ВКонтакте); НовыйТест(ТаблицаТестов, "ВК_ПолучитьСписокЗаказов" , "Получить список заказов" , ВКонтакте); НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьИнформациюОДиске" , "Получить информацию о диске" , ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_СоздатьПапку" , "Создать папку" , ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_ЗагрузитьПоАдресуПолучитьОбъект", "Загрузить по URL и получить" , ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить файл" , ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_СоздатьКопиюОбъекта" , "Создать копию объекта" , ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСсылкуНаСкачивание" , "Получить ссылку на скачивание" , ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокФайлов" , "Получить список файлов" , ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_ПереместитьОбъект" , "Переместить объект" , ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_ДействияПубличныхОбъектов" , "Действия с публичными объектами", ЯДиск); НовыйТест(ТаблицаТестов, "ЯДиск_ПолучитьСписокОпубликованных" , "Получить список опубликованных" , ЯДиск); НовыйТест(ТаблицаТестов, "ГВ_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , ВСпейс); НовыйТест(ТаблицаТестов, "ГВ_ПолучитьТокен" , "Получить токен" , ВСпейс); НовыйТест(ТаблицаТестов, "ГВ_ОбновитьТокен" , "Обновить токен" , ВСпейс); НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокКалендарей" , "Получить список календарей" , Календарь); НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь" , Календарь); НовыйТест(ТаблицаТестов, "ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие" , Календарь); НовыйТест(ТаблицаТестов, "ГК_ПолучитьСписокСобытий" , "Получить список событий" , Календарь); НовыйТест(ТаблицаТестов, "ГД_ПолучитьСписокКаталогов" , "Получить список каталогов" , Драйв); НовыйТест(ТаблицаТестов, "ГД_ЗагрузитьУдалитьФайл" , "Загрузить/Удалить Файл" , Драйв); НовыйТест(ТаблицаТестов, "ГД_СоздатьУдалитьКомментарий" , "Создать/Удалить кооментарий" , Драйв); НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер); НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер); НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер); НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСКартинкой" , "Твит с картинкой" , Твиттер); НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСВидео" , "Твит с видео" , Твиттер); НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСГиф" , "Твит с гиф" , Твиттер); НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТвитСОпросом" , "Твит с опросом" , Твиттер); НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьИнформациюОКанале" , "Получить информацию канала" , Вайбер); НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьДанныеПользователя" , "Получить данные пользователя" , Вайбер); НовыйТест(ТаблицаТестов, "Вайбер_ПолучитьОнлайнПользователей" , "Получить онлайн пользователей" , Вайбер); НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьТекстовоеСообщение" , "Отправить текстовое сообщение" , Вайбер); НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьКартинку" , "Отправить картинку" , Вайбер); НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьФайл" , "Отправить файл" , Вайбер); НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьКонтакт" , "Отправить контакт" , Вайбер); НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьЛокацию" , "Отправить локацию" , Вайбер); НовыйТест(ТаблицаТестов, "Вайбер_ОтправитьСсылку" , "Отправить ссылку" , Вайбер); Возврат ТаблицаТестов; КонецФункции Функция ПолучитьОбщийМодуль(Знач Имя) Модуль = Вычислить(Имя); // BSLLS:ExecuteExternalCodeInCommonModule-off Возврат Модуль; КонецФункции Функция СоответствиеФайловЛога(Знач Вид) СоответствиеФайлов = Новый Соответствие; СоответствиеФайлов.Вставить("Телеграм", "./.github/workflows/logs/Testing-Telegram.log"); СоответствиеФайлов.Вставить("Телеграм", "./.github/workflows/logs/Testing-VK.log"); СоответствиеФайлов.Вставить("Телеграм", "./.github/workflows/logs/Testing-YandexDisk.log"); СоответствиеФайлов.Вставить("Телеграм", "./.github/workflows/logs/Testing-Viber.log"); СоответствиеФайлов.Вставить("Телеграм", "./.github/workflows/logs/Testing-GoogleWorkspace.log"); СоответствиеФайлов.Вставить("Телеграм", "./.github/workflows/logs/Testing-GoogleCalendar.log"); СоответствиеФайлов.Вставить("Телеграм", "./.github/workflows/logs/Testing-GoogleDrive.log"); СоответствиеФайлов.Вставить("Телеграм", "./.github/workflows/logs/Testing-Twitter.log"); Возврат СоответствиеФайлов; КонецФункции Процедура НовыйТест(ТаблицаЗначений, Знач Метод, Знач Синоним, Знач Раздел) НовыйТест = ТаблицаЗначений.Добавить(); НовыйТест.Метод = Метод; НовыйТест.Синоним = Синоним; НовыйТест.Раздел = Раздел; КонецПроцедуры Процедура ЗаписатьПараметрВФайл(Знач Параметр, Знач Значение, Знач Путь) Значения = OPI_Инструменты.ПрочитатьJSONФайл(Путь); Значения.Вставить(Параметр, Значение); Запись = Новый ЗаписьJSON; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб); Запись.ОткрытьФайл(Путь, , , ПараметрыЗаписиJSON); ЗаписатьJSON(Запись, Значения); Запись.Закрыть(); КонецПроцедуры #КонецОбласти