1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-01-26 05:37:27 +02:00

Преобразование OPI -> OInt (workflow)

This commit is contained in:
Vitaly the Alpaca 2024-05-04 17:43:50 +00:00 committed by Vitaly the Alpaca (bot)
parent ac413d1fa5
commit 2f3acf62de
6 changed files with 210 additions and 7 deletions

View File

@ -623,6 +623,48 @@ jobs:
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ГД_СоздатьКаталог"
Testing-GoogleSheets:
runs-on: ubuntu-latest
needs: Testing-GoogleWorkspace
steps:
- uses: actions/checkout@v2
- uses: otymko/setup-onescript@v1.4
with:
version: 1.9.0
- name: Получить тестовые данные из кэша
uses: actions/cache/restore@v3
with:
key: test-data
path: ./data.json
- name: Установить asserts и 1testrunner
run: |
opm install asserts
opm install 1testrunner
- name: Установить OInt
run: |
cd ./OInt
opm build
opm install *.ospx
- name: Создать таблицу
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ГТ_СоздатьТаблицу"
- name: Получить таблицу
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ГТ_ПолучитьТаблицу"
- name: Заполнить/Очистить ячейки
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./OInt/tests/Modules/internal/OPI_Тесты.os "ГТ_ЗаполнитьОчиститьЯчейки"
Testing-Notion:
runs-on: ubuntu-latest
needs: [Decode, Build]
@ -811,7 +853,7 @@ jobs:
Clear-Cache:
runs-on: ubuntu-latest
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-Notion, Testing-Slack, Encode]
needs: [Testing-Telegram, Testing-VK, Testing-Viber, Testing-Twitter, Testing-YandexDisk, Testing-GoogleWorkspace, Testing-GoogleCalendar, Testing-GoogleDrive, Testing-GoogleSheets, Testing-Notion, Testing-Slack, Encode]
if: ${{ always() }}
steps:
- name: Очистка основного кэша

View File

@ -40,13 +40,18 @@
// ClientID - Строка - Client ID - id
// Calendar - Булево - разрешение на методы Calendar - calendar
// Drive - Булево - разрешение на методы Drive - drive
// Sheets - Булево - разрешение на методы Sheets - sheets
//
// Возвращаемое значение:
// Строка - Ссылка получения кода
Функция СформироватьСсылкуПолученияКода(Знач ClientID, Знач Calendar = Истина, Знач Drive = Истина) Экспорт
Функция СформироватьСсылкуПолученияКода(Знач ClientID
, Знач Calendar = Истина
, Знач Drive = Истина
, Знач Sheets = Истина) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(ClientID);
OPI_ПреобразованиеТипов.ПолучитьБулево(Calendar);
OPI_ПреобразованиеТипов.ПолучитьБулево(Sheets);
OPI_ПреобразованиеТипов.ПолучитьБулево(Drive);
URL = "https://accounts.google.com/o/oauth2/auth";
@ -56,7 +61,7 @@
ПараметрыURL.Вставить("client_id" , ClientID);
ПараметрыURL.Вставить("redirect_uri" , "http://localhost");
ПараметрыURL.Вставить("access_type" , "offline");
ПараметрыURL.Вставить("scope" , ПолучитьСписокРазрешений(Calendar, Drive));
ПараметрыURL.Вставить("scope" , ПолучитьСписокРазрешений(Calendar, Drive, Sheets));
URL = URL + OPI_Инструменты.ПараметрыЗапросаВСтроку(ПараметрыURL);
@ -144,7 +149,7 @@
#Область СлужебныеПроцедурыИфункции
Функция ПолучитьСписокРазрешений(Calendar, Drive)
Функция ПолучитьСписокРазрешений(Calendar, Drive, Sheets)
МассивРазрешений = Новый Массив;
@ -156,6 +161,10 @@
МассивРазрешений.Добавить("https://www.googleapis.com/auth/drive");
КонецЕсли;
Если Sheets Тогда
МассивРазрешений.Добавить("https://www.googleapis.com/auth/spreadsheets");
КонецЕсли;
Возврат СтрСоединить(МассивРазрешений, " ");
КонецФункции

View File

@ -61,16 +61,23 @@
// Выполняет запрос /getUpdates, возвращающий информацию о событиях бота. Используется при работе в polling режиме
//
// Параметры:
// Токен - Строка - Токен бота - token
// Токен - Строка - Токен бота - token
// Таймаут - Строка,Число - Время ожидания новых событий - timeout
// Смещение - Строка,Число - Смещение в списке получаемых сообщений - offset
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ПолучитьОбновления(Знач Токен) Экспорт
Функция ПолучитьОбновления(Знач Токен, Знач Таймаут = 0, Знач Смещение = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "api.telegram.org/bot" + Токен + "/getUpdates";
Ответ = OPI_Инструменты.Get(URL);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("timeout", Таймаут , "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("offset" , Смещение, "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции

View File

@ -2472,6 +2472,144 @@
#КонецОбласти
#Область GoogleSheets
Процедура ГТ_СоздатьТаблицу() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
Наименование = "Тестовая таблица";
МассивЛистов = Новый Массив;
МассивЛистов.Добавить("Лист1");
МассивЛистов.Добавить("Лист2");
Результат = OPI_GoogleSheets.СоздатьКнигу(Токен, Наименование, МассивЛистов);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьКнигу");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["properties"]["title"]).Равно(Наименование);
Для Н = 0 По МассивЛистов.ВГраница() Цикл
ИмяЛиста = Результат["sheets"][Н]["properties"]["title"];
OPI_ПолучениеДанныхТестов.ОжидаетЧто(ИмяЛиста).Равно(МассивЛистов[Н]);
Лист = Результат["sheets"][Н]["properties"]["sheetId"];
Лист = OPI_Инструменты.ЧислоВСтроку(Лист);
КонецЦикла;
Книга = Результат["spreadsheetId"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GS_Spreadsheet", Книга);
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("GS_Sheet" , Лист);
Результат = OPI_GoogleSheets.СоздатьКнигу(Токен, Наименование, МассивЛистов);
Книга2 = Результат["spreadsheetId"];
Результат = OPI_GoogleSheets.КопироватьЛист(Токен, Книга, Книга2, Лист);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "КопироватьЛист");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["title"]).Равно(ИмяЛиста + " (копия)");
Наименование = "Тестовый лист";
Результат = OPI_GoogleSheets.ДобавитьЛист(Токен, Книга, Наименование);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЛист");
НовыйЛист = Результат["replies"][0]["addSheet"]["properties"]["sheetId"];
НовыйЛист = OPI_Инструменты.ЧислоВСтроку(НовыйЛист);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["spreadsheetId"]).Равно(Книга);
Результат = OPI_GoogleSheets.УдалитьЛист(Токен, Книга, НовыйЛист);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЛист");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["spreadsheetId"]).Равно(Книга);
Наименование = "Тестовая таблица (изм.)";
Результат = OPI_GoogleSheets.ИзменитьНаименованиеКниги(Токен, Книга, Наименование);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ИзменитьНаименованиеКниги");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["spreadsheetId"]).Равно(Книга);
КонецПроцедуры
Процедура ГТ_ПолучитьТаблицу() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
Книга = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("GS_Spreadsheet");
Наименование = "Тестовая таблица";
Результат = OPI_GoogleSheets.ПолучитьКнигу(Токен, Книга);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТаблицу");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["properties"]["title"]).Равно(Наименование);
КонецПроцедуры
Процедура ГТ_ЗаполнитьОчиститьЯчейки() Экспорт
Токен = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("Google_Token");
Книга = OPI_ПолучениеДанныхТестов.ПолучитьПараметр("GS_Spreadsheet");
Лист = "Лист2";
СтруктураЯчеек = Новый Соответствие;
СтруктураЯчеек.Вставить("A1", "Это A1");
СтруктураЯчеек.Вставить("A2", "Это A2");
СтруктураЯчеек.Вставить("B2", "Это B2");
СтруктураЯчеек.Вставить("B3", "Это B3");
СтруктураЯчеек.Вставить("A3", "Это A3");
СтруктураЯчеек.Вставить("A4", "Это A4");
СтруктураЯчеек.Вставить("B1", "Это B1");
СтруктураЯчеек.Вставить("B4", "Это B4");
МассивЯчеек = Новый Массив;
МассивЯчеек.Добавить("B2");
МассивЯчеек.Добавить("A3");
МассивЯчеек.Добавить("B4");
Результат = OPI_GoogleSheets.УстановитьЗначенияЯчеек(Токен, Книга, СтруктураЯчеек, Лист);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьЗначенияЯчеек");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["spreadsheetId"]).Равно(Книга);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["totalUpdatedCells"]).Равно(СтруктураЯчеек.Количество());
Результат = OPI_GoogleSheets.ПолучитьЗначенияЯчеек(Токен, Книга, МассивЯчеек, Лист);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗначенияЯчеек");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["spreadsheetId"]).Равно(Книга);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["valueRanges"].Количество()).Равно(МассивЯчеек.Количество());
Результат = OPI_GoogleSheets.ПолучитьЗначенияЯчеек(Токен, Книга, , Лист);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗначенияЯчеек");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["spreadsheetId"]).Равно(Книга);
МассивЯчеек = Новый Массив;
МассивЯчеек.Добавить("B2");
МассивЯчеек.Добавить("A3");
МассивЯчеек.Добавить("B4");
Результат = OPI_GoogleSheets.ОчиститьЯчейки(Токен, Книга, МассивЯчеек, Лист);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьЯчейки");
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["spreadsheetId"]).Равно(Книга);
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["clearedRanges"].Количество()).Равно(МассивЯчеек.Количество());
КонецПроцедуры
#КонецОбласти
#Область Twitter
Процедура Твиттер_ПолучитьСсылкуАвторизации() Экспорт

View File

@ -52,6 +52,7 @@
Разделы.Вставить("GoogleWorkspace", СтандартныеЗависимости);
Разделы.Вставить("GoogleCalendar" , ЗависимостиГугл);
Разделы.Вставить("GoogleDrive" , ЗависимостиГугл);
Разделы.Вставить("GoogleSheets" , ЗависимостиГугл);
Разделы.Вставить("Notion" , СтандартныеЗависимости);
Разделы.Вставить("Slack" , СтандартныеЗависимости);
@ -71,6 +72,7 @@
ВСпейс = "GoogleWorkspace";
Ноушн = "Notion";
Слак = "Slack";
Таблицы = "GoogleSheets";
ТаблицаТестов = Новый ТаблицаЗначений;
ТаблицаТестов.Колонки.Добавить("Метод");
@ -146,6 +148,10 @@
НовыйТест(ТаблицаТестов, "ГД_СоздатьУдалитьКомментарий" , "Создать/Удалить кооментарий" , Драйв);
НовыйТест(ТаблицаТестов, "ГД_СоздатьКаталог" , "Создать/Удалить каталог" , Драйв);
НовыйТест(ТаблицаТестов, "ГТ_СоздатьТаблицу" , "Создать таблицу" , Таблицы);
НовыйТест(ТаблицаТестов, "ГТ_ПолучитьТаблицу" , "Получить таблицу" , Таблицы);
НовыйТест(ТаблицаТестов, "ГТ_ЗаполнитьОчиститьЯчейки" , "Заполнить/Очистить ячейки" , Таблицы);
НовыйТест(ТаблицаТестов, "Твиттер_ПолучитьСсылкуАвторизации" , "Получить ссылку авторизации" , Твиттер);
НовыйТест(ТаблицаТестов, "Твиттер_ОбновитьТокен" , "Обновить токен" , Твиттер);
НовыйТест(ТаблицаТестов, "Твиттер_СоздатьТекстовыйТвит" , "Текстовый твит" , Твиттер);

View File

@ -291,4 +291,5 @@
Или ТипЗнч(Значение) = Тип("Дата");
КонецФункции
#КонецОбласти